RTEMS 4.11Annotated Report
Sat Nov 27 21:37:38 2010
0004c8f8 <TOD_MICROSECONDS_TO_TICKS>:
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c8f8: 41f9 0006 2760 lea 62760 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MICROSECONDS_TO_TICKS(
uint32_t microseconds
)
{
4c8fe: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (microseconds / rtems_configuration_get_microseconds_per_tick());
}
4c902: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4c906: 4e5e unlk %fp <== NOT EXECUTED
4c908: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
...
00047fb0 <TOD_MILLISECONDS_TO_TICKS>:
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47fb0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
47fb4: 2039 0005 e2f0 movel 5e2f0 <Configuration+0xc>,%d0 <== NOT EXECUTED
#include <rtems/score/tod.h>
uint32_t TOD_MILLISECONDS_TO_TICKS(
uint32_t milliseconds
)
{
47fba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
return (milliseconds / rtems_configuration_get_milliseconds_per_tick());
47fbc: 243c 0000 03e8 movel #1000,%d2 <== NOT EXECUTED
47fc2: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
}
47fc6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47fca: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
47fce: 2002 movel %d2,%d0 <== NOT EXECUTED
47fd0: 241f movel %sp@+,%d2 <== NOT EXECUTED
47fd2: 4e5e unlk %fp <== NOT EXECUTED
...
0004c9fc <TOD_TICKS_PER_SECOND_method>:
uint32_t TOD_TICKS_PER_SECOND_method(void)
{
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4c9fc: 41f9 0005 ee70 lea 5ee70 <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)
{
4ca02: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick());
}
4ca06: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
4ca0c: 4e5e unlk %fp <== NOT EXECUTED
4ca0e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00046e64 <_API_Mutex_Unlock>:
#include <rtems/score/apimutex.h>
void _API_Mutex_Unlock(
API_Mutex_Control *the_mutex
)
{
46e64: 4e56 0000 linkw %fp,#0
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
46e68: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
46e6e: 5280 addql #1,%d0
46e70: 206e 0008 moveal %fp@(8),%a0
46e74: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
_CORE_mutex_Surrender(
46e7a: 42a7 clrl %sp@-
46e7c: 2f28 0008 movel %a0@(8),%sp@-
46e80: 4868 0010 pea %a0@(16)
46e84: 4eb9 0004 716c jsr 4716c <_CORE_mutex_Surrender>
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46e8a: 4fef 000c lea %sp@(12),%sp
}
46e8e: 4e5e unlk %fp
_CORE_mutex_Surrender(
&the_mutex->Mutex,
the_mutex->Object.id,
NULL
);
_Thread_Enable_dispatch();
46e90: 4ef9 0004 891a jmp 4891a <_Thread_Enable_dispatch>
...
00046d3e <_API_extensions_Run_postdriver>:
*
* _API_extensions_Run_postdriver
*/
void _API_extensions_Run_postdriver( void )
{
46d3e: 4e56 0000 linkw %fp,#0
46d42: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d44: 2479 0005 e6b4 moveal 5e6b4 <_API_extensions_List>,%a2
void _API_extensions_Run_postdriver( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46d4a: b5fc 0005 e6b8 cmpal #386744,%a2
46d50: 6710 beqs 46d62 <_API_extensions_Run_postdriver+0x24><== NEVER TAKEN
* Currently all APIs configure this hook so it is always non-NULL.
*/
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
46d52: 206a 0008 moveal %a2@(8),%a0
46d56: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
46d58: 2452 moveal %a2@,%a2
void _API_extensions_Run_postdriver( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46d5a: b5fc 0005 e6b8 cmpal #386744,%a2
46d60: 66f0 bnes 46d52 <_API_extensions_Run_postdriver+0x14><== NEVER TAKEN
#if defined(FUNCTIONALITY_NOT_CURRENTLY_USED_BY_ANY_API)
if ( the_extension->postdriver_hook )
#endif
(*the_extension->postdriver_hook)();
}
}
46d62: 246e fffc moveal %fp@(-4),%a2
46d66: 4e5e unlk %fp <== NOT EXECUTED
00046d6a <_API_extensions_Run_postswitch>:
*
* _API_extensions_Run_postswitch
*/
void _API_extensions_Run_postswitch( void )
{
46d6a: 4e56 0000 linkw %fp,#0
46d6e: 2f0a movel %a2,%sp@-
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d70: 2479 0005 e6b4 moveal 5e6b4 <_API_extensions_List>,%a2
void _API_extensions_Run_postswitch( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46d76: b5fc 0005 e6b8 cmpal #386744,%a2
46d7c: 6718 beqs 46d96 <_API_extensions_Run_postswitch+0x2c><== NEVER TAKEN
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
46d7e: 2f39 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%sp@-
46d84: 206a 000c moveal %a2@(12),%a0
46d88: 4e90 jsr %a0@
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
!_Chain_Is_tail( &_API_extensions_List, the_node ) ;
the_node = the_node->next ) {
46d8a: 2452 moveal %a2@,%a2
void _API_extensions_Run_postswitch( void )
{
Chain_Node *the_node;
API_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_API_extensions_List );
46d8c: 588f addql #4,%sp
46d8e: b5fc 0005 e6b8 cmpal #386744,%a2
46d94: 66e8 bnes 46d7e <_API_extensions_Run_postswitch+0x14><== NEVER TAKEN
the_extension = (API_extensions_Control *) the_node;
(*the_extension->postswitch_hook)( _Thread_Executing );
}
}
46d96: 246e fffc moveal %fp@(-4),%a2
46d9a: 4e5e unlk %fp
...
0004f5ec <_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];
4f5ec: 41f9 0005 f820 lea 5f820 <_Barrier_Translate_core_barrier_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Barrier_Translate_core_barrier_return_code (
CORE_barrier_Status the_barrier_status
)
{
4f5f2: 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];
}
4f5f6: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4f5fa: 4e5e unlk %fp <== NOT EXECUTED
4f5fc: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004eaf8 <_CORE_barrier_Release>:
#else
Objects_Id id __attribute__((unused)),
CORE_barrier_API_mp_support_callout api_barrier_mp_support __attribute__((unused))
#endif
)
{
4eaf8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4eafc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
4eb00: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4eb04: 47f9 0004 ae88 lea 4ae88 <_Thread_queue_Dequeue>,%a3 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t count;
count = 0;
4eb0a: 4282 clrl %d2 <== NOT EXECUTED
while ( (the_thread = _Thread_queue_Dequeue(&the_barrier->Wait_queue)) ) {
4eb0c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4eb0e: 4e93 jsr %a3@ <== NOT EXECUTED
4eb10: 588f addql #4,%sp <== NOT EXECUTED
4eb12: 4a80 tstl %d0 <== NOT EXECUTED
4eb14: 670c beqs 4eb22 <_CORE_barrier_Release+0x2a> <== NOT EXECUTED
4eb16: 2f0a movel %a2,%sp@- <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_barrier_mp_support) ( the_thread, id );
#endif
count++;
4eb18: 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)) ) {
4eb1a: 4e93 jsr %a3@ <== NOT EXECUTED
4eb1c: 588f addql #4,%sp <== NOT EXECUTED
4eb1e: 4a80 tstl %d0 <== NOT EXECUTED
4eb20: 66f4 bnes 4eb16 <_CORE_barrier_Release+0x1e> <== NOT EXECUTED
#endif
count++;
}
the_barrier->number_of_waiting_threads = 0;
return count;
}
4eb22: 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;
4eb24: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
return count;
}
4eb28: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4eb2e: 4e5e unlk %fp <== NOT EXECUTED
...
0004eb34 <_CORE_barrier_Wait>:
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;
_ISR_Disable( level );
4eb34: 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
)
{
4eb3a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
Thread_Control *executing;
ISR_Level level;
executing = _Thread_Executing;
4eb3e: 2279 0006 103c moveal 6103c <_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
)
{
4eb44: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4eb48: 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;
4eb4c: 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
)
{
4eb50: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4eb54: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
4eb58: 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 );
4eb5c: 40c1 movew %sr,%d1 <== NOT EXECUTED
4eb5e: 8081 orl %d1,%d0 <== NOT EXECUTED
4eb60: 46c0 movew %d0,%sr <== NOT EXECUTED
the_barrier->number_of_waiting_threads++;
4eb62: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
4eb66: 5280 addql #1,%d0 <== NOT EXECUTED
4eb68: 2140 0048 movel %d0,%a0@(72) <== NOT EXECUTED
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
4eb6c: 4aa8 0040 tstl %a0@(64) <== NOT EXECUTED
4eb70: 6606 bnes 4eb78 <_CORE_barrier_Wait+0x44> <== NOT EXECUTED
if ( the_barrier->number_of_waiting_threads ==
4eb72: b0a8 0044 cmpl %a0@(68),%d0 <== NOT EXECUTED
4eb76: 672e beqs 4eba6 <_CORE_barrier_Wait+0x72> <== NOT EXECUTED
4eb78: 7001 moveq #1,%d0 <== NOT EXECUTED
4eb7a: 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;
4eb7e: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
4eb82: 2342 0020 movel %d2,%a1@(32) <== NOT EXECUTED
_ISR_Enable( level );
4eb86: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );
4eb88: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
4eb8c: 203c 0004 b3c4 movel #308164,%d0 <== NOT EXECUTED
4eb92: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4eb96: 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 );
4eb9a: 2d40 0010 movel %d0,%fp@(16) <== NOT EXECUTED
}
4eb9e: 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 );
4eba0: 4ef9 0004 b000 jmp 4b000 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_ISR_Disable( level );
the_barrier->number_of_waiting_threads++;
if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {
if ( the_barrier->number_of_waiting_threads ==
the_barrier->Attributes.maximum_count) {
executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
4eba6: 7001 moveq #1,%d0 <== NOT EXECUTED
4eba8: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( level );
4ebac: 46c1 movew %d1,%sr <== NOT EXECUTED
_CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
4ebae: 2d44 0010 movel %d4,%fp@(16) <== NOT EXECUTED
4ebb2: 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 );
}
4ebb6: 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 );
4ebba: 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 );
}
4ebbe: 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 );
4ebc0: 4ef9 0004 eaf8 jmp 4eaf8 <_CORE_barrier_Release> <== NOT EXECUTED
...
00059d04 <_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
)
{
59d04: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
59d08: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
59d0c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
59d10: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
59d14: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
59d18: 2a2e 001c movel %fp@(28),%d5 <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t number_broadcasted;
Thread_Wait_information *waitp;
if ( size > the_message_queue->maximum_message_size ) {
59d1c: b4ab 004c cmpl %a3@(76),%d2 <== NOT EXECUTED
59d20: 6262 bhis 59d84 <_CORE_message_queue_Broadcast+0x80><== NOT EXECUTED
* NOTE: This check is critical because threads can block on
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
59d22: 4aab 0048 tstl %a3@(72) <== NOT EXECUTED
59d26: 664c bnes 59d74 <_CORE_message_queue_Broadcast+0x70><== NOT EXECUTED
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
59d28: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d2a: 49f9 0005 c720 lea 5c720 <_Thread_queue_Dequeue>,%a4 <== NOT EXECUTED
* NOTE: This check is critical because threads can block on
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
59d30: 4283 clrl %d3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
59d32: 4bf9 0006 19e8 lea 619e8 <memcpy>,%a5 <== NOT EXECUTED
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
59d38: 4e94 jsr %a4@ <== NOT EXECUTED
59d3a: 588f addql #4,%sp <== NOT EXECUTED
59d3c: 2440 moveal %d0,%a2 <== NOT EXECUTED
59d3e: 4a80 tstl %d0 <== NOT EXECUTED
59d40: 6722 beqs 59d64 <_CORE_message_queue_Broadcast+0x60><== NOT EXECUTED
59d42: 2f02 movel %d2,%sp@- <== NOT EXECUTED
_Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {
waitp = &the_thread->Wait;
number_broadcasted += 1;
59d44: 5283 addql #1,%d3 <== NOT EXECUTED
59d46: 2f04 movel %d4,%sp@- <== NOT EXECUTED
59d48: 2f2a 002c movel %a2@(44),%sp@- <== NOT EXECUTED
59d4c: 4e95 jsr %a5@ <== NOT EXECUTED
buffer,
waitp->return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
59d4e: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
59d52: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59d56: 2082 movel %d2,%a0@ <== NOT EXECUTED
/*
* There must be no pending messages if there is a thread waiting to
* receive a message.
*/
number_broadcasted = 0;
while ((the_thread =
59d58: 2f0b movel %a3,%sp@- <== NOT EXECUTED
59d5a: 4e94 jsr %a4@ <== NOT EXECUTED
59d5c: 588f addql #4,%sp <== NOT EXECUTED
59d5e: 2440 moveal %d0,%a2 <== NOT EXECUTED
59d60: 4a80 tstl %d0 <== NOT EXECUTED
59d62: 66de bnes 59d42 <_CORE_message_queue_Broadcast+0x3e><== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
59d64: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59d66: 4280 clrl %d0 <== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_message_queue_mp_support) ( the_thread, id );
#endif
}
*count = number_broadcasted;
59d68: 2083 movel %d3,%a0@ <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d6a: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
59d70: 4e5e unlk %fp <== NOT EXECUTED
59d72: 4e75 rts <== NOT EXECUTED
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
*count = 0;
59d74: 2045 moveal %d5,%a0 <== NOT EXECUTED
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
59d76: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d78: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
* send and receive and this ensures that we are broadcasting
* the message to threads waiting to receive -- not to send.
*/
if ( the_message_queue->number_of_pending_messages != 0 ) {
*count = 0;
59d7e: 4290 clrl %a0@ <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d80: 4e5e unlk %fp <== NOT EXECUTED
59d82: 4e75 rts <== NOT EXECUTED
Thread_Control *the_thread;
uint32_t number_broadcasted;
Thread_Wait_information *waitp;
if ( size > the_message_queue->maximum_message_size ) {
return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
59d84: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
*count = number_broadcasted;
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
59d86: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
59d8c: 4e5e unlk %fp <== NOT EXECUTED
00059d90 <_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
)
{
59d90: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59d94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
/*
* This will flush blocked threads whether they were blocked on
* a send or receive.
*/
_Thread_queue_Flush(
59d96: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
59d9a: 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
)
{
59d9e: 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(
59da2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59da4: 4eb9 0005 cb14 jsr 5cb14 <_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 )
59daa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
59dae: 4aaa 0048 tstl %a2@(72) <== NOT EXECUTED
59db2: 6612 bnes 59dc6 <_CORE_message_queue_Close+0x36> <== NOT EXECUTED
(void) _CORE_message_queue_Flush_support( the_message_queue );
(void) _Workspace_Free( the_message_queue->message_buffers );
59db4: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
}
59dba: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
59dbe: 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 );
59dc0: 4ef9 0005 d852 jmp 5d852 <_Workspace_Free> <== NOT EXECUTED
* we just flushed all waiting threads, we don't have to worry about
* the flush satisfying any blocked senders as a side-effect.
*/
if ( the_message_queue->number_of_pending_messages != 0 )
(void) _CORE_message_queue_Flush_support( the_message_queue );
59dc6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59dc8: 4eb9 0005 9e00 jsr 59e00 <_CORE_message_queue_Flush_support><== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
59dce: 2d6a 005c 0008 movel %a2@(92),%fp@(8) <== NOT EXECUTED
* we just flushed all waiting threads, we don't have to worry about
* the flush satisfying any blocked senders as a side-effect.
*/
if ( the_message_queue->number_of_pending_messages != 0 )
(void) _CORE_message_queue_Flush_support( the_message_queue );
59dd4: 588f addql #4,%sp <== NOT EXECUTED
(void) _Workspace_Free( the_message_queue->message_buffers );
}
59dd6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
59dda: 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 );
59ddc: 4ef9 0005 d852 jmp 5d852 <_Workspace_Free> <== NOT EXECUTED
...
00059de4 <_CORE_message_queue_Flush>:
*/
uint32_t _CORE_message_queue_Flush(
CORE_message_queue_Control *the_message_queue
)
{
59de4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59de8: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( the_message_queue->number_of_pending_messages != 0 )
59dec: 4aa8 0048 tstl %a0@(72) <== NOT EXECUTED
59df0: 6606 bnes 59df8 <_CORE_message_queue_Flush+0x14> <== NOT EXECUTED
return _CORE_message_queue_Flush_support( the_message_queue );
else
return 0;
}
59df2: 4280 clrl %d0 <== NOT EXECUTED
59df4: 4e5e unlk %fp <== NOT EXECUTED
59df6: 4e75 rts <== NOT EXECUTED
59df8: 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 );
59dfa: 4ef9 0005 9e00 jmp 59e00 <_CORE_message_queue_Flush_support><== NOT EXECUTED
00059e00 <_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 );
59e00: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
uint32_t _CORE_message_queue_Flush_support(
CORE_message_queue_Control *the_message_queue
)
{
59e06: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
59e0a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
59e0e: 48d7 1c00 moveml %a2-%a4,%sp@ <== NOT EXECUTED
*
* For now, though, we are very happy to have a small routine with
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
59e12: 40c1 movew %sr,%d1 <== NOT EXECUTED
59e14: 8081 orl %d1,%d0 <== NOT EXECUTED
59e16: 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;
}
59e18: 2668 0050 moveal %a0@(80),%a3 <== NOT EXECUTED
* For now, though, we are very happy to have a small routine with
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
inactive_head = _Chain_Head( &the_message_queue->Inactive_messages );
59e1c: 49e8 0060 lea %a0@(96),%a4 <== NOT EXECUTED
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
_ISR_Enable( level );
return count;
}
59e20: 2268 0058 moveal %a0@(88),%a1 <== NOT EXECUTED
inactive_first->previous = message_queue_last;
message_queue_first->previous = inactive_head;
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
count = the_message_queue->number_of_pending_messages;
59e24: 2028 0048 movel %a0@(72),%d0 <== NOT EXECUTED
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
inactive_head = _Chain_Head( &the_message_queue->Inactive_messages );
inactive_first = inactive_head->next;;
59e28: 2468 0060 moveal %a0@(96),%a2 <== NOT EXECUTED
message_queue_first = _Chain_First( &the_message_queue->Pending_messages );
message_queue_last = _Chain_Last( &the_message_queue->Pending_messages );
inactive_head->next = message_queue_first;
59e2c: 214b 0060 movel %a3,%a0@(96) <== NOT EXECUTED
message_queue_last->next = inactive_first;
inactive_first->previous = message_queue_last;
59e30: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
inactive_first = inactive_head->next;;
message_queue_first = _Chain_First( &the_message_queue->Pending_messages );
message_queue_last = _Chain_Last( &the_message_queue->Pending_messages );
inactive_head->next = message_queue_first;
message_queue_last->next = inactive_first;
59e34: 228a movel %a2,%a1@ <== NOT EXECUTED
* For now, though, we are very happy to have a small routine with
* fixed execution time that only deals with pending messages.
*/
_ISR_Disable( level );
inactive_head = _Chain_Head( &the_message_queue->Inactive_messages );
59e36: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
59e3a: 47e8 0050 lea %a0@(80),%a3 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
59e3e: 49e8 0054 lea %a0@(84),%a4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
59e42: 214b 0058 movel %a3,%a0@(88) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
59e46: 214c 0050 movel %a4,%a0@(80) <== NOT EXECUTED
head->next = tail;
head->previous = NULL;
59e4a: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
message_queue_first->previous = inactive_head;
_Chain_Initialize_empty( &the_message_queue->Pending_messages );
count = the_message_queue->number_of_pending_messages;
the_message_queue->number_of_pending_messages = 0;
59e4e: 42a8 0048 clrl %a0@(72) <== NOT EXECUTED
_ISR_Enable( level );
59e52: 46c1 movew %d1,%sr <== NOT EXECUTED
return count;
}
59e54: 4cd7 1c00 moveml %sp@,%a2-%a4 <== NOT EXECUTED
59e58: 4e5e unlk %fp <== NOT EXECUTED
0005010c <_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)) {
5010c: 7203 moveq #3,%d1 <== NOT EXECUTED
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Attributes *the_message_queue_attributes,
uint32_t maximum_pending_messages,
size_t maximum_message_size
)
{
5010e: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
50112: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
50116: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5011a: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5011e: 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)) {
50122: c280 andl %d0,%d1 <== NOT EXECUTED
)
{
size_t message_buffering_required;
size_t allocated_message_size;
the_message_queue->maximum_pending_messages = maximum_pending_messages;
50124: 2542 0044 movel %d2,%a2@(68) <== NOT EXECUTED
the_message_queue->number_of_pending_messages = 0;
50128: 42aa 0048 clrl %a2@(72) <== NOT EXECUTED
the_message_queue->maximum_message_size = maximum_message_size;
5012c: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
50130: 4a81 tstl %d1 <== NOT EXECUTED
50132: 6718 beqs 5014c <_CORE_message_queue_Initialize+0x40><== NOT EXECUTED
allocated_message_size += sizeof(uint32_t);
50134: 2200 movel %d0,%d1 <== NOT EXECUTED
50136: 5881 addql #4,%d1 <== NOT EXECUTED
allocated_message_size &= ~(sizeof(uint32_t) - 1);
50138: 76fc moveq #-4,%d3 <== NOT EXECUTED
5013a: c283 andl %d3,%d1 <== NOT EXECUTED
}
if (allocated_message_size < maximum_message_size)
5013c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5013e: 640e bccs 5014e <_CORE_message_queue_Initialize+0x42><== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50140: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
return false;
50146: 4200 clrb %d0 <== NOT EXECUTED
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
}
50148: 4e5e unlk %fp <== NOT EXECUTED
5014a: 4e75 rts <== NOT EXECUTED
/*
* Round size up to multiple of a pointer for chain init and
* check for overflow on adding overhead to each message.
*/
allocated_message_size = maximum_message_size;
if (allocated_message_size & (sizeof(uint32_t) - 1)) {
5014c: 2200 movel %d0,%d1 <== NOT EXECUTED
/*
* Calculate how much total memory is required for message buffering and
* check for overflow on the multiplication.
*/
message_buffering_required = (size_t) maximum_pending_messages *
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
5014e: 2601 movel %d1,%d3 <== NOT EXECUTED
50150: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
/*
* Calculate how much total memory is required for message buffering and
* check for overflow on the multiplication.
*/
message_buffering_required = (size_t) maximum_pending_messages *
50156: 2003 movel %d3,%d0 <== NOT EXECUTED
50158: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
(allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
if (message_buffering_required < allocated_message_size)
5015c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5015e: 62e0 bhis 50140 <_CORE_message_queue_Initialize+0x34><== NOT EXECUTED
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
_Workspace_Allocate( message_buffering_required );
50160: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50162: 4eb9 0005 2f92 jsr 52f92 <_Workspace_Allocate> <== NOT EXECUTED
if (the_message_queue->message_buffers == 0)
50168: 588f addql #4,%sp <== NOT EXECUTED
return false;
/*
* Attempt to allocate the message memory
*/
the_message_queue->message_buffers = (CORE_message_queue_Buffer *)
5016a: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
_Workspace_Allocate( message_buffering_required );
if (the_message_queue->message_buffers == 0)
5016e: 67d0 beqs 50140 <_CORE_message_queue_Initialize+0x34><== NOT EXECUTED
/*
* Initialize the pool of inactive messages, pending messages,
* and set of waiting threads.
*/
_Chain_Initialize (
50170: 2f03 movel %d3,%sp@- <== NOT EXECUTED
50172: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50174: 2f00 movel %d0,%sp@- <== NOT EXECUTED
50176: 486a 0060 pea %a2@(96) <== NOT EXECUTED
5017a: 4eb9 0005 4e0c jsr 54e0c <_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 );
50180: 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(
50184: 7001 moveq #1,%d0 <== NOT EXECUTED
50186: 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 );
5018a: 41ea 0050 lea %a2@(80),%a0 <== NOT EXECUTED
5018e: 2548 0058 movel %a0,%a2@(88) <== NOT EXECUTED
50192: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
50196: 4878 0080 pea 80 <DBL_MANT_DIG+0x4b> <== NOT EXECUTED
5019a: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
5019e: 42aa 0054 clrl %a2@(84) <== NOT EXECUTED
501a2: b090 cmpl %a0@,%d0 <== NOT EXECUTED
501a4: 57c0 seq %d0 <== NOT EXECUTED
501a6: 49c0 extbl %d0 <== NOT EXECUTED
501a8: 4480 negl %d0 <== NOT EXECUTED
501aa: 2f00 movel %d0,%sp@- <== NOT EXECUTED
501ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
501ae: 4eb9 0005 2554 jsr 52554 <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
501b4: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
}
501b8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
STATES_WAITING_FOR_MESSAGE,
CORE_MESSAGE_QUEUE_STATUS_TIMEOUT
);
return true;
501be: 7001 moveq #1,%d0 <== NOT EXECUTED
}
501c0: 4e5e unlk %fp <== NOT EXECUTED
00054e80 <_CORE_message_queue_Insert_message>:
#endif
_CORE_message_queue_Set_message_priority( the_message, submit_type );
#if !defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
_ISR_Disable( level );
54e80: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _CORE_message_queue_Insert_message(
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message,
CORE_message_queue_Submit_types submit_type
)
{
54e86: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
54e8a: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
54e8e: 2f0b movel %a3,%sp@- <== NOT EXECUTED
54e90: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
54e94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
#endif
_CORE_message_queue_Set_message_priority( the_message, submit_type );
#if !defined(RTEMS_SCORE_COREMSG_ENABLE_MESSAGE_PRIORITY)
_ISR_Disable( level );
54e96: 40c1 movew %sr,%d1 <== NOT EXECUTED
54e98: 8081 orl %d1,%d0 <== NOT EXECUTED
54e9a: 46c0 movew %d0,%sr <== NOT EXECUTED
SET_NOTIFY();
the_message_queue->number_of_pending_messages++;
54e9c: 52a8 0048 addql #1,%a0@(72) <== NOT EXECUTED
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST )
54ea0: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
54ea6: b0ae 0010 cmpl %fp@(16),%d0 <== NOT EXECUTED
54eaa: 6720 beqs 54ecc <_CORE_message_queue_Insert_message+0x4c><== NOT EXECUTED
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
54eac: 2468 0050 moveal %a0@(80),%a2 <== NOT EXECUTED
after_node->next = the_node;
54eb0: 2149 0050 movel %a1,%a0@(80) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Prepend_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
_Chain_Insert_unprotected(_Chain_Head(the_chain), the_node);
54eb4: 41e8 0050 lea %a0@(80),%a0 <== NOT EXECUTED
54eb8: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
54ebc: 228a movel %a2,%a1@ <== NOT EXECUTED
before_node->previous = the_node;
54ebe: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
else
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
54ec2: 46c1 movew %d1,%sr <== NOT EXECUTED
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
#endif
}
54ec4: 245f moveal %sp@+,%a2 <== NOT EXECUTED
54ec6: 265f moveal %sp@+,%a3 <== NOT EXECUTED
54ec8: 4e5e unlk %fp <== NOT EXECUTED
54eca: 4e75 rts <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
54ecc: 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 );
54ed0: 47e8 0054 lea %a0@(84),%a3 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
54ed4: 2149 0058 movel %a1,%a0@(88) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
54ed8: 228b movel %a3,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
54eda: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
54ede: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_message_queue->number_of_pending_messages++;
if ( submit_type == CORE_MESSAGE_QUEUE_SEND_REQUEST )
_CORE_message_queue_Append_unprotected(the_message_queue, the_message);
else
_CORE_message_queue_Prepend_unprotected(the_message_queue, the_message);
_ISR_Enable( level );
54ee0: 46c1 movew %d1,%sr <== NOT EXECUTED
* the message is actually in the queue at this point.
*/
if ( notify && the_message_queue->notify_handler )
(*the_message_queue->notify_handler)(the_message_queue->notify_argument);
#endif
}
54ee2: 245f moveal %sp@+,%a2 <== NOT EXECUTED
54ee4: 265f moveal %sp@+,%a3 <== NOT EXECUTED
54ee6: 4e5e unlk %fp <== NOT EXECUTED
...
000501c4 <_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 );
501c4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
501ca: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
501ce: 2079 0006 85a0 moveal 685a0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
void *buffer,
size_t *size_p,
bool wait,
Watchdog_Interval timeout
)
{
501d4: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
501d8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
501dc: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
501e0: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
501e4: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
501e8: 282e 001c movel %fp@(28),%d4 <== NOT EXECUTED
501ec: 162e 001b moveb %fp@(27),%d3 <== NOT EXECUTED
ISR_Level level;
CORE_message_queue_Buffer_control *the_message;
Thread_Control *executing;
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
501f0: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
_ISR_Disable( level );
501f4: 40c1 movew %sr,%d1 <== NOT EXECUTED
501f6: 8081 orl %d1,%d0 <== NOT EXECUTED
501f8: 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 );
501fa: 200a movel %a2,%d0 <== NOT EXECUTED
501fc: 0680 0000 0054 addil #84,%d0 <== NOT EXECUTED
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
50202: 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))
50206: b08b cmpl %a3,%d0 <== NOT EXECUTED
50208: 674e beqs 50258 <_CORE_message_queue_Seize+0x94> <== NOT EXECUTED
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
5020a: 2053 moveal %a3@,%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
5020c: 49ea 0050 lea %a2@(80),%a4 <== NOT EXECUTED
50210: 214c 0004 movel %a4,%a0@(4) <== NOT EXECUTED
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
_ISR_Disable( level );
the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
if ( the_message != NULL ) {
the_message_queue->number_of_pending_messages -= 1;
50214: 53aa 0048 subql #1,%a2@(72) <== NOT EXECUTED
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
50218: 2548 0050 movel %a0,%a2@(80) <== NOT EXECUTED
_ISR_Enable( level );
5021c: 46c1 movew %d1,%sr <== NOT EXECUTED
*size_p = the_message->Contents.size;
5021e: 22ab 0008 movel %a3@(8),%a1@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
50222: 45ea 0060 lea %a2@(96),%a2 <== NOT EXECUTED
_Thread_Executing->Wait.count =
50226: 2079 0006 85a0 moveal 685a0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
5022c: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
50230: 2f11 movel %a1@,%sp@- <== NOT EXECUTED
50232: 486b 000c pea %a3@(12) <== NOT EXECUTED
50236: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50238: 4eb9 0005 7664 jsr 57664 <memcpy> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _CORE_message_queue_Free_message_buffer (
CORE_message_queue_Control *the_message_queue,
CORE_message_queue_Buffer_control *the_message
)
{
_Chain_Append( &the_message_queue->Inactive_messages, &the_message->Node );
5023e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
50242: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
50246: 2d4b 000c movel %a3,%fp@(12) <== NOT EXECUTED
executing->Wait.return_argument = size_p;
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
5024a: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
50250: 4e5e unlk %fp <== NOT EXECUTED
50252: 4ef9 0005 0040 jmp 50040 <_Chain_Append> <== NOT EXECUTED
return;
}
#endif
}
if ( !wait ) {
50258: 4a03 tstb %d3 <== NOT EXECUTED
5025a: 6612 bnes 5026e <_CORE_message_queue_Seize+0xaa> <== NOT EXECUTED
_ISR_Enable( level );
5025c: 46c1 movew %d1,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
5025e: 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 );
}
50260: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
#endif
}
if ( !wait ) {
_ISR_Enable( level );
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
50266: 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 );
}
5026a: 4e5e unlk %fp <== NOT EXECUTED
5026c: 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;
5026e: 7001 moveq #1,%d0 <== NOT EXECUTED
50270: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
}
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
executing->Wait.id = id;
executing->Wait.return_argument_second.mutable_object = buffer;
50274: 2142 002c movel %d2,%a0@(44) <== NOT EXECUTED
executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
return;
}
_Thread_queue_Enter_critical_section( &the_message_queue->Wait_queue );
executing->Wait.queue = &the_message_queue->Wait_queue;
50278: 214a 0044 movel %a2,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
5027c: 2145 0020 movel %d5,%a0@(32) <== NOT EXECUTED
executing->Wait.return_argument_second.mutable_object = buffer;
executing->Wait.return_argument = size_p;
50280: 2149 0028 movel %a1,%a0@(40) <== NOT EXECUTED
/* Wait.count will be filled in with the message priority */
_ISR_Enable( level );
50284: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
50286: 49f9 0005 2660 lea 52660 <_Thread_queue_Timeout>,%a4 <== NOT EXECUTED
5028c: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED
50290: 2d4c 0010 movel %a4,%fp@(16) <== NOT EXECUTED
50294: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
50298: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5029e: 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 );
502a0: 4ef9 0005 229c jmp 5229c <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
...
000502a8 <_CORE_message_queue_Submit>:
#endif
CORE_message_queue_Submit_types submit_type,
bool wait,
Watchdog_Interval timeout
)
{
502a8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
502ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
502b0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
502b4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
CORE_message_queue_Buffer_control *the_message;
Thread_Control *the_thread;
if ( size > the_message_queue->maximum_message_size ) {
502b8: b4aa 004c cmpl %a2@(76),%d2 <== NOT EXECUTED
502bc: 6256 bhis 50314 <_CORE_message_queue_Submit+0x6c><== NOT EXECUTED
}
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
502be: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
502c2: 675c beqs 50320 <_CORE_message_queue_Submit+0x78><== NOT EXECUTED
/*
* No one waiting on the message queue at this time, so attempt to
* queue the message up for a future receive.
*/
if ( the_message_queue->number_of_pending_messages <
502c4: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED
502c8: 650c bcss 502d6 <_CORE_message_queue_Submit+0x2e><== NOT EXECUTED
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
}
#if !defined(RTEMS_SCORE_COREMSG_ENABLE_BLOCKING_SEND)
return CORE_MESSAGE_QUEUE_STATUS_TOO_MANY;
502ca: 7002 moveq #2,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
502cc: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
502d2: 4e5e unlk %fp <== NOT EXECUTED
502d4: 4e75 rts <== NOT EXECUTED
_CORE_message_queue_Allocate_message_buffer (
CORE_message_queue_Control *the_message_queue
)
{
return (CORE_message_queue_Buffer_control *)
_Chain_Get( &the_message_queue->Inactive_messages );
502d6: 486a 0060 pea %a2@(96) <== NOT EXECUTED
502da: 4eb9 0005 00a0 jsr 500a0 <_Chain_Get> <== NOT EXECUTED
502e0: 2640 moveal %d0,%a3 <== NOT EXECUTED
const void *source,
void *destination,
size_t size
)
{
memcpy(destination, source, size);
502e2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
502e4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
502e8: 486b 000c pea %a3@(12) <== NOT EXECUTED
502ec: 4eb9 0005 7664 jsr 57664 <memcpy> <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_message->Contents.buffer,
size
);
the_message->Contents.size = size;
502f2: 2742 0008 movel %d2,%a3@(8) <== NOT EXECUTED
_CORE_message_queue_Set_message_priority( the_message, submit_type );
_CORE_message_queue_Insert_message(
502f6: 2f2e 001c movel %fp@(28),%sp@- <== NOT EXECUTED
502fa: 2f0b movel %a3,%sp@- <== NOT EXECUTED
502fc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
502fe: 4eb9 0005 4e80 jsr 54e80 <_CORE_message_queue_Insert_message><== NOT EXECUTED
the_message_queue,
the_message,
submit_type
);
return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;
50304: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
50308: 4280 clrl %d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
5030a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
50310: 4e5e unlk %fp <== NOT EXECUTED
50312: 4e75 rts <== NOT EXECUTED
{
CORE_message_queue_Buffer_control *the_message;
Thread_Control *the_thread;
if ( size > the_message_queue->maximum_message_size ) {
return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;
50314: 7001 moveq #1,%d0 <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50316: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5031c: 4e5e unlk %fp <== NOT EXECUTED
5031e: 4e75 rts <== NOT EXECUTED
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
50320: 2f0a movel %a2,%sp@- <== NOT EXECUTED
50322: 4eb9 0005 2124 jsr 52124 <_Thread_queue_Dequeue> <== NOT EXECUTED
if ( the_thread ) {
50328: 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 );
5032a: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( the_thread ) {
5032c: 4a80 tstl %d0 <== NOT EXECUTED
5032e: 672e beqs 5035e <_CORE_message_queue_Submit+0xb6><== NOT EXECUTED
50330: 2f02 movel %d2,%sp@- <== NOT EXECUTED
50332: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
50336: 2f2b 002c movel %a3@(44),%sp@- <== NOT EXECUTED
5033a: 4eb9 0005 7664 jsr 57664 <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;
50340: 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;
50344: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
50348: 4280 clrl %d0 <== NOT EXECUTED
_CORE_message_queue_Copy_buffer(
buffer,
the_thread->Wait.return_argument_second.mutable_object,
size
);
*(size_t *) the_thread->Wait.return_argument = size;
5034a: 2082 movel %d2,%a0@ <== NOT EXECUTED
the_thread->Wait.count = (uint32_t) submit_type;
5034c: 222e 001c movel %fp@(28),%d1 <== NOT EXECUTED
50350: 2741 0024 movel %d1,%a3@(36) <== NOT EXECUTED
_Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );
}
return CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_WAIT;
#endif
}
50354: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
5035a: 4e5e unlk %fp <== NOT EXECUTED
5035c: 4e75 rts <== NOT EXECUTED
/*
* Is there a thread currently waiting on this message queue?
*/
if ( the_message_queue->number_of_pending_messages == 0 ) {
the_thread = _Thread_queue_Dequeue( &the_message_queue->Wait_queue );
if ( the_thread ) {
5035e: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
/*
* No one waiting on the message queue at this time, so attempt to
* queue the message up for a future receive.
*/
if ( the_message_queue->number_of_pending_messages <
50362: b0aa 0044 cmpl %a2@(68),%d0 <== NOT EXECUTED
50366: 6400 ff62 bccw 502ca <_CORE_message_queue_Submit+0x22><== NOT EXECUTED
5036a: 6000 ff6a braw 502d6 <_CORE_message_queue_Submit+0x2e><== NOT EXECUTED
...
00046f40 <_CORE_mutex_Initialize>:
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46f40: 4e56 0000 linkw %fp,#0
46f44: 206e 0008 moveal %fp@(8),%a0
46f48: 2f0a movel %a2,%sp@-
46f4a: 246e 000c moveal %fp@(12),%a2
/* Add this to the RTEMS environment later ?????????
rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||
initial_lock == CORE_MUTEX_UNLOCKED );
*/
the_mutex->Attributes = *the_mutex_attributes;
46f4e: 224a moveal %a2,%a1
46f50: 2159 0040 movel %a1@+,%a0@(64)
46f54: 2159 0044 movel %a1@+,%a0@(68)
46f58: 2159 0048 movel %a1@+,%a0@(72)
CORE_mutex_Status _CORE_mutex_Initialize(
CORE_mutex_Control *the_mutex,
CORE_mutex_Attributes *the_mutex_attributes,
uint32_t initial_lock
)
{
46f5c: 202e 0010 movel %fp@(16),%d0
/* Add this to the RTEMS environment later ?????????
rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||
initial_lock == CORE_MUTEX_UNLOCKED );
*/
the_mutex->Attributes = *the_mutex_attributes;
46f60: 3151 004c movew %a1@,%a0@(76)
the_mutex->lock = initial_lock;
46f64: 2140 004e movel %d0,%a0@(78)
the_mutex->blocked_count = 0;
46f68: 42a8 0056 clrl %a0@(86)
if ( initial_lock == CORE_MUTEX_LOCKED ) {
46f6c: 4a80 tstl %d0
46f6e: 6654 bnes 46fc4 <_CORE_mutex_Initialize+0x84>
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46f70: 2279 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a1
the_mutex->Attributes = *the_mutex_attributes;
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
the_mutex->nest_count = 1;
46f76: 7201 moveq #1,%d1
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
46f78: 2169 0008 005e movel %a1@(8),%a0@(94)
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
46f7e: 2028 0046 movel %a0@(70),%d0
the_mutex->Attributes = *the_mutex_attributes;
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
the_mutex->nest_count = 1;
46f82: 2141 0052 movel %d1,%a0@(82)
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46f86: 123c 0002 moveb #2,%d1
the_mutex->lock = initial_lock;
the_mutex->blocked_count = 0;
if ( initial_lock == CORE_MUTEX_LOCKED ) {
the_mutex->nest_count = 1;
the_mutex->holder = _Thread_Executing;
46f8a: 2149 005a movel %a1,%a0@(90)
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
46f8e: b280 cmpl %d0,%d1
46f90: 6762 beqs 46ff4 <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
46f92: 123c 0003 moveb #3,%d1
46f96: b280 cmpl %d0,%d1
46f98: 675a beqs 46ff4 <_CORE_mutex_Initialize+0xb4> <== NEVER TAKEN
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46f9a: 4aaa 0006 tstl %a2@(6)
46f9e: 56c0 sne %d0
46fa0: 4878 0005 pea 5 <COMPARE>
46fa4: 49c0 extbl %d0
46fa6: 4878 0400 pea 400 <D_BIAS+0x2>
46faa: 4480 negl %d0
46fac: 2f00 movel %d0,%sp@-
46fae: 2f08 movel %a0,%sp@-
46fb0: 4eb9 0004 9090 jsr 49090 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
46fb6: 4fef 0010 lea %sp@(16),%sp
46fba: 4280 clrl %d0
}
46fbc: 246e fffc moveal %fp@(-4),%a2
46fc0: 4e5e unlk %fp
46fc2: 4e75 rts
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46fc4: 4aaa 0006 tstl %a2@(6)
46fc8: 56c0 sne %d0
#endif
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
46fca: 42a8 0052 clrl %a0@(82)
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
46fce: 49c0 extbl %d0
46fd0: 4480 negl %d0
_Thread_Executing->resource_count++;
}
} else {
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
46fd2: 42a8 005a clrl %a0@(90)
the_mutex->holder_id = 0;
46fd6: 42a8 005e clrl %a0@(94)
}
_Thread_queue_Initialize(
46fda: 4878 0005 pea 5 <COMPARE>
46fde: 4878 0400 pea 400 <D_BIAS+0x2>
46fe2: 2f00 movel %d0,%sp@-
46fe4: 2f08 movel %a0,%sp@-
46fe6: 4eb9 0004 9090 jsr 49090 <_Thread_queue_Initialize>
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
46fec: 4fef 0010 lea %sp@(16),%sp
46ff0: 4280 clrl %d0
46ff2: 60c8 bras 46fbc <_CORE_mutex_Initialize+0x7c>
the_mutex->holder = _Thread_Executing;
the_mutex->holder_id = _Thread_Executing->Object.id;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
if ( _Thread_Executing->current_priority <
46ff4: 2028 004a movel %a0@(74),%d0 <== NOT EXECUTED
46ff8: b0a9 0014 cmpl %a1@(20),%d0 <== NOT EXECUTED
46ffc: 6228 bhis 47026 <_CORE_mutex_Initialize+0xe6> <== NOT EXECUTED
_Chain_Prepend_unprotected( &_Thread_Executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = _Thread_Executing->current_priority;
#endif
_Thread_Executing->resource_count++;
46ffe: 52a9 001c addql #1,%a1@(28) <== NOT EXECUTED
the_mutex->nest_count = 0;
the_mutex->holder = NULL;
the_mutex->holder_id = 0;
}
_Thread_queue_Initialize(
47002: 4aaa 0006 tstl %a2@(6) <== NOT EXECUTED
47006: 56c0 sne %d0 <== NOT EXECUTED
47008: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4700c: 49c0 extbl %d0 <== NOT EXECUTED
4700e: 4878 0400 pea 400 <D_BIAS+0x2> <== NOT EXECUTED
47012: 4480 negl %d0 <== NOT EXECUTED
47014: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47016: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47018: 4eb9 0004 9090 jsr 49090 <_Thread_queue_Initialize> <== NOT EXECUTED
THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
4701e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47022: 4280 clrl %d0 <== NOT EXECUTED
47024: 6096 bras 46fbc <_CORE_mutex_Initialize+0x7c> <== NOT EXECUTED
}
47026: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
if ( _Thread_Executing->current_priority <
the_mutex->Attributes.priority_ceiling )
return CORE_MUTEX_STATUS_CEILING_VIOLATED;
4702a: 7006 moveq #6,%d0 <== NOT EXECUTED
STATES_WAITING_FOR_MUTEX,
CORE_MUTEX_TIMEOUT
);
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4702c: 4e5e unlk %fp <== NOT EXECUTED
000470bc <_CORE_mutex_Seize>:
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
470bc: 4e56 0000 linkw %fp,#0
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
470c0: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
Objects_Id _id,
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
470c6: 2f0a movel %a2,%sp@-
470c8: 246e 0008 moveal %fp@(8),%a2
470cc: 2f02 movel %d2,%sp@-
470ce: 142e 0013 moveb %fp@(19),%d2
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
470d2: 4a80 tstl %d0
470d4: 6704 beqs 470da <_CORE_mutex_Seize+0x1e>
470d6: 4a02 tstb %d2
470d8: 6634 bnes 4710e <_CORE_mutex_Seize+0x52> <== ALWAYS TAKEN
470da: 486e 0018 pea %fp@(24)
470de: 2f0a movel %a2,%sp@-
470e0: 4eb9 0004 b9a8 jsr 4b9a8 <_CORE_mutex_Seize_interrupt_trylock>
470e6: 508f addql #8,%sp
470e8: 4a80 tstl %d0
470ea: 6716 beqs 47102 <_CORE_mutex_Seize+0x46>
470ec: 4a02 tstb %d2
470ee: 6636 bnes 47126 <_CORE_mutex_Seize+0x6a> <== ALWAYS TAKEN
470f0: 202e 0018 movel %fp@(24),%d0 <== NOT EXECUTED
470f4: 46c0 movew %d0,%sr <== NOT EXECUTED
470f6: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
470fc: 7001 moveq #1,%d0 <== NOT EXECUTED
470fe: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
}
47102: 242e fff8 movel %fp@(-8),%d2
47106: 246e fffc moveal %fp@(-4),%a2
4710a: 4e5e unlk %fp
4710c: 4e75 rts
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
4710e: 7001 moveq #1,%d0
47110: b0b9 0005 e6a0 cmpl 5e6a0 <_System_state_Current>,%d0
47116: 64c2 bccs 470da <_CORE_mutex_Seize+0x1e>
47118: 4878 0012 pea 12 <INVALID_OPERATION+0x2>
4711c: 42a7 clrl %sp@-
4711e: 42a7 clrl %sp@-
47120: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
47126: 7001 moveq #1,%d0
47128: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
4712e: 2540 0030 movel %d0,%a2@(48)
47132: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
47138: 5280 addql #1,%d0
4713a: 216e 000c 0020 movel %fp@(12),%a0@(32)
47140: 214a 0044 movel %a2,%a0@(68)
47144: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
4714a: 202e 0018 movel %fp@(24),%d0
4714e: 46c0 movew %d0,%sr
47150: 2f2e 0014 movel %fp@(20),%sp@-
47154: 2f0a movel %a2,%sp@-
47156: 4eb9 0004 7030 jsr 47030 <_CORE_mutex_Seize_interrupt_blocking>
}
4715c: 242e fff8 movel %fp@(-8),%d2
bool _wait,
Watchdog_Interval _timeout,
ISR_Level _level
)
{
_CORE_mutex_Seize_body( _the_mutex, _id, _wait, _timeout, _level );
47160: 508f addql #8,%sp
}
47162: 246e fffc moveal %fp@(-4),%a2
47166: 4e5e unlk %fp
...
00047030 <_CORE_mutex_Seize_interrupt_blocking>:
)
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47030: 7002 moveq #2,%d0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
47032: 4e56 0000 linkw %fp,#0
Thread_Control *executing;
executing = _Thread_Executing;
47036: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
void _CORE_mutex_Seize_interrupt_blocking(
CORE_mutex_Control *the_mutex,
Watchdog_Interval timeout
)
{
4703c: 2f0a movel %a2,%sp@-
4703e: 246e 0008 moveal %fp@(8),%a2
47042: 2f02 movel %d2,%sp@-
47044: 242e 000c movel %fp@(12),%d2
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
47048: b0aa 0046 cmpl %a2@(70),%d0
4704c: 6728 beqs 47076 <_CORE_mutex_Seize_interrupt_blocking+0x46>
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
4704e: 4879 0004 919c pea 4919c <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
47054: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
47058: 2f02 movel %d2,%sp@-
4705a: 2f0a movel %a2,%sp@-
4705c: 4eb9 0004 8dd8 jsr 48dd8 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
47062: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47066: 4fef 000c lea %sp@(12),%sp
}
4706a: 246e fffc moveal %fp@(-4),%a2
4706e: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
47070: 4ef9 0004 891a jmp 4891a <_Thread_Enable_dispatch>
{
Thread_Control *executing;
executing = _Thread_Executing;
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ) {
if ( the_mutex->holder->current_priority > executing->current_priority ) {
47076: 226a 005a moveal %a2@(90),%a1
4707a: 2028 0014 movel %a0@(20),%d0
4707e: b0a9 0014 cmpl %a1@(20),%d0
47082: 64ca bccs 4704e <_CORE_mutex_Seize_interrupt_blocking+0x1e><== NEVER TAKEN
_Thread_Change_priority(
47084: 42a7 clrl %sp@-
47086: 2f00 movel %d0,%sp@-
47088: 2f09 movel %a1,%sp@-
4708a: 4eb9 0004 8424 jsr 48424 <_Thread_Change_priority>
47090: 4fef 000c lea %sp@(12),%sp
);
}
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
47094: 4879 0004 919c pea 4919c <_Thread_queue_Timeout>
false
);
}
}
the_mutex->blocked_count++;
4709a: 52aa 0056 addql #1,%a2@(86)
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
4709e: 2f02 movel %d2,%sp@-
470a0: 2f0a movel %a2,%sp@-
470a2: 4eb9 0004 8dd8 jsr 48dd8 <_Thread_queue_Enqueue_with_handler>
_Thread_Enable_dispatch();
}
470a8: 242e fff8 movel %fp@(-8),%d2
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470ac: 4fef 000c lea %sp@(12),%sp
}
470b0: 246e fffc moveal %fp@(-4),%a2
470b4: 4e5e unlk %fp
}
the_mutex->blocked_count++;
_Thread_queue_Enqueue( &the_mutex->Wait_queue, timeout );
_Thread_Enable_dispatch();
470b6: 4ef9 0004 891a jmp 4891a <_Thread_Enable_dispatch>
0004b9a8 <_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
)
{
4b9a8: 4e56 0000 linkw %fp,#0
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
4b9ac: 2279 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a1
4b9b2: 2f0a movel %a2,%sp@-
4b9b4: 206e 0008 moveal %fp@(8),%a0
4b9b8: 2f02 movel %d2,%sp@-
4b9ba: 246e 000c moveal %fp@(12),%a2
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
4b9be: 42a9 0034 clrl %a1@(52)
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
4b9c2: 4aa8 004e tstl %a0@(78)
4b9c6: 673a beqs 4ba02 <_CORE_mutex_Seize_interrupt_trylock+0x5a>
the_mutex->lock = CORE_MUTEX_LOCKED;
the_mutex->holder = executing;
the_mutex->holder_id = executing->Object.id;
the_mutex->nest_count = 1;
4b9c8: 7201 moveq #1,%d1
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
the_mutex->lock = CORE_MUTEX_LOCKED;
the_mutex->holder = executing;
the_mutex->holder_id = executing->Object.id;
4b9ca: 2169 0008 005e movel %a1@(8),%a0@(94)
return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p );
}
4b9d0: 2028 0046 movel %a0@(70),%d0
the_mutex->nest_count = 1;
4b9d4: 2141 0052 movel %d1,%a0@(82)
if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) ||
4b9d8: 123c 0002 moveb #2,%d1
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;
if ( !_CORE_mutex_Is_locked( the_mutex ) ) {
the_mutex->lock = CORE_MUTEX_LOCKED;
4b9dc: 42a8 004e clrl %a0@(78)
the_mutex->holder = executing;
4b9e0: 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 ) ||
4b9e4: b280 cmpl %d0,%d1
4b9e6: 672e beqs 4ba16 <_CORE_mutex_Seize_interrupt_trylock+0x6e>
4b9e8: 123c 0003 moveb #3,%d1
4b9ec: b280 cmpl %d0,%d1
4b9ee: 674e beqs 4ba3e <_CORE_mutex_Seize_interrupt_trylock+0x96><== NEVER TAKEN
executing->resource_count++;
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4b9f0: 2012 movel %a2@,%d0
4b9f2: 46c0 movew %d0,%sr
return 0;
4b9f4: 4280 clrl %d0
4b9f6: 242e fff8 movel %fp@(-8),%d2
4b9fa: 246e fffc moveal %fp@(-4),%a2
4b9fe: 4e5e unlk %fp
4ba00: 4e75 rts
/*
* At this point, we know the mutex was not available. If this thread
* is the thread that has locked the mutex, let's see if we are allowed
* to nest access.
*/
if ( _Thread_Is_executing( the_mutex->holder ) ) {
4ba02: b3e8 005a cmpal %a0@(90),%a1
4ba06: 671a beqs 4ba22 <_CORE_mutex_Seize_interrupt_trylock+0x7a>
4ba08: 242e fff8 movel %fp@(-8),%d2
/*
* The mutex is not available and the caller must deal with the possibility
* of blocking.
*/
return 1;
4ba0c: 7001 moveq #1,%d0
4ba0e: 246e fffc moveal %fp@(-4),%a2
4ba12: 4e5e unlk %fp
4ba14: 4e75 rts
_Chain_Prepend_unprotected( &executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = executing->current_priority;
#endif
executing->resource_count++;
4ba16: 52a9 001c addql #1,%a1@(28)
}
if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
_ISR_Enable( *level_p );
4ba1a: 2012 movel %a2@,%d0
4ba1c: 46c0 movew %d0,%sr
return 0;
4ba1e: 4280 clrl %d0
4ba20: 60d4 bras 4b9f6 <_CORE_mutex_Seize_interrupt_trylock+0x4e>
* At this point, we know the mutex was not available. If this thread
* is the thread that has locked the mutex, let's see if we are allowed
* to nest access.
*/
if ( _Thread_Is_executing( the_mutex->holder ) ) {
switch ( the_mutex->Attributes.lock_nesting_behavior ) {
4ba22: 2028 0040 movel %a0@(64),%d0
4ba26: 6658 bnes 4ba80 <_CORE_mutex_Seize_interrupt_trylock+0xd8><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
4ba28: 52a8 0052 addql #1,%a0@(82) <== NOT EXECUTED
_ISR_Enable( *level_p );
4ba2c: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba2e: 46c0 movew %d0,%sr <== NOT EXECUTED
4ba30: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4ba34: 4280 clrl %d0 <== NOT EXECUTED
4ba36: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba3a: 4e5e unlk %fp <== NOT EXECUTED
4ba3c: 4e75 rts <== NOT EXECUTED
_Chain_Prepend_unprotected( &executing->lock_mutex,
&the_mutex->queue.lock_queue );
the_mutex->queue.priority_before = executing->current_priority;
#endif
executing->resource_count++;
4ba3e: 2429 001c movel %a1@(28),%d2 <== NOT EXECUTED
4ba42: 2002 movel %d2,%d0 <== NOT EXECUTED
4ba44: 5280 addql #1,%d0 <== NOT EXECUTED
4ba46: 2340 001c movel %d0,%a1@(28) <== NOT EXECUTED
*/
{
Priority_Control ceiling;
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
4ba4a: 2228 004a movel %a0@(74),%d1 <== NOT EXECUTED
current = executing->current_priority;
4ba4e: 2029 0014 movel %a1@(20),%d0 <== NOT EXECUTED
if ( current == ceiling ) {
4ba52: b081 cmpl %d1,%d0 <== NOT EXECUTED
4ba54: 6700 0082 beqw 4bad8 <_CORE_mutex_Seize_interrupt_trylock+0x130><== NOT EXECUTED
_ISR_Enable( *level_p );
return 0;
}
if ( current > ceiling ) {
4ba58: 6244 bhis 4ba9e <_CORE_mutex_Seize_interrupt_trylock+0xf6><== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4ba5a: 7206 moveq #6,%d1 <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4ba5c: 7001 moveq #1,%d0 <== NOT EXECUTED
);
_Thread_Enable_dispatch();
return 0;
}
/* if ( current < ceiling ) */ {
executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
4ba5e: 2341 0034 movel %d1,%a1@(52) <== NOT EXECUTED
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4ba62: 2140 004e movel %d0,%a0@(78) <== NOT EXECUTED
the_mutex->nest_count = 0; /* undo locking above */
4ba66: 42a8 0052 clrl %a0@(82) <== NOT EXECUTED
executing->resource_count--; /* undo locking above */
4ba6a: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
_ISR_Enable( *level_p );
4ba6e: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba70: 46c0 movew %d0,%sr <== NOT EXECUTED
4ba72: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4ba76: 4280 clrl %d0 <== NOT EXECUTED
4ba78: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba7c: 4e5e unlk %fp <== NOT EXECUTED
4ba7e: 4e75 rts <== NOT EXECUTED
* At this point, we know the mutex was not available. If this thread
* is the thread that has locked the mutex, let's see if we are allowed
* to nest access.
*/
if ( _Thread_Is_executing( the_mutex->holder ) ) {
switch ( the_mutex->Attributes.lock_nesting_behavior ) {
4ba80: 7201 moveq #1,%d1
4ba82: b280 cmpl %d0,%d1
4ba84: 6682 bnes 4ba08 <_CORE_mutex_Seize_interrupt_trylock+0x60><== ALWAYS TAKEN
case CORE_MUTEX_NESTING_ACQUIRES:
the_mutex->nest_count++;
_ISR_Enable( *level_p );
return 0;
case CORE_MUTEX_NESTING_IS_ERROR:
executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
4ba86: 7002 moveq #2,%d0 <== NOT EXECUTED
4ba88: 2340 0034 movel %d0,%a1@(52) <== NOT EXECUTED
_ISR_Enable( *level_p );
4ba8c: 2012 movel %a2@,%d0 <== NOT EXECUTED
4ba8e: 46c0 movew %d0,%sr <== NOT EXECUTED
4ba90: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4ba94: 4280 clrl %d0 <== NOT EXECUTED
4ba96: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4ba9a: 4e5e unlk %fp <== NOT EXECUTED
4ba9c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4ba9e: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4baa4: 5280 addql #1,%d0 <== NOT EXECUTED
4baa6: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return 0;
}
if ( current > ceiling ) {
_Thread_Disable_dispatch();
_ISR_Enable( *level_p );
4baac: 2012 movel %a2@,%d0 <== NOT EXECUTED
4baae: 46c0 movew %d0,%sr <== NOT EXECUTED
_Thread_Change_priority(
4bab0: 42a7 clrl %sp@- <== NOT EXECUTED
4bab2: 2f28 004a movel %a0@(74),%sp@- <== NOT EXECUTED
4bab6: 2f28 005a movel %a0@(90),%sp@- <== NOT EXECUTED
4baba: 4eb9 0004 8424 jsr 48424 <_Thread_Change_priority> <== NOT EXECUTED
the_mutex->holder,
the_mutex->Attributes.priority_ceiling,
false
);
_Thread_Enable_dispatch();
4bac0: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
4bac6: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4baca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return 0;
4bace: 4280 clrl %d0 <== NOT EXECUTED
4bad0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4bad4: 4e5e unlk %fp <== NOT EXECUTED
4bad6: 4e75 rts <== NOT EXECUTED
Priority_Control current;
ceiling = the_mutex->Attributes.priority_ceiling;
current = executing->current_priority;
if ( current == ceiling ) {
_ISR_Enable( *level_p );
4bad8: 2012 movel %a2@,%d0 <== NOT EXECUTED
4bada: 46c0 movew %d0,%sr <== NOT EXECUTED
4badc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
return 0;
4bae0: 4280 clrl %d0 <== NOT EXECUTED
4bae2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4bae6: 4e5e unlk %fp <== NOT EXECUTED
...
0004716c <_CORE_mutex_Surrender>:
#else
Objects_Id id __attribute__((unused)),
CORE_mutex_API_mp_support_callout api_mutex_mp_support __attribute__((unused))
#endif
)
{
4716c: 4e56 0000 linkw %fp,#0
47170: 2f0a movel %a2,%sp@-
47172: 246e 0008 moveal %fp@(8),%a2
Thread_Control *the_thread;
Thread_Control *holder;
holder = the_mutex->holder;
47176: 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 ) {
4717a: 4a2a 0044 tstb %a2@(68)
4717e: 6712 beqs 47192 <_CORE_mutex_Surrender+0x26>
if ( !_Thread_Is_executing( holder ) )
47180: b1f9 0005 e6f8 cmpal 5e6f8 <_Per_CPU_Information+0xc>,%a0
47186: 670a beqs 47192 <_CORE_mutex_Surrender+0x26> <== ALWAYS TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47188: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
* must be released by the thread which acquired them.
*/
if ( the_mutex->Attributes.only_owner_release ) {
if ( !_Thread_Is_executing( holder ) )
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
4718c: 7003 moveq #3,%d0 <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4718e: 4e5e unlk %fp <== NOT EXECUTED
47190: 4e75 rts <== NOT EXECUTED
return CORE_MUTEX_STATUS_NOT_OWNER_OF_RESOURCE;
}
/* XXX already unlocked -- not right status */
if ( !the_mutex->nest_count )
47192: 202a 0052 movel %a2@(82),%d0
47196: 6758 beqs 471f0 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
return CORE_MUTEX_STATUS_SUCCESSFUL;
the_mutex->nest_count--;
47198: 5380 subql #1,%d0
4719a: 2540 0052 movel %d0,%a2@(82)
if ( the_mutex->nest_count != 0 ) {
4719e: 6650 bnes 471f0 <_CORE_mutex_Surrender+0x84> <== NEVER TAKEN
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471a0: 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 ) ||
471a4: 7202 moveq #2,%d1
471a6: b280 cmpl %d0,%d1
471a8: 6750 beqs 471fa <_CORE_mutex_Surrender+0x8e>
471aa: 123c 0003 moveb #3,%d1
471ae: b280 cmpl %d0,%d1
471b0: 6748 beqs 471fa <_CORE_mutex_Surrender+0x8e> <== NEVER TAKEN
if ( holder->resource_count == 0 &&
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
}
}
the_mutex->holder = NULL;
471b2: 42aa 005a clrl %a2@(90)
the_mutex->holder_id = 0;
471b6: 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 ) ) ) {
471ba: 2f0a movel %a2,%sp@-
471bc: 4eb9 0004 8c60 jsr 48c60 <_Thread_queue_Dequeue>
471c2: 588f addql #4,%sp
471c4: 2040 moveal %d0,%a0
471c6: 4a80 tstl %d0
471c8: 6700 0090 beqw 4725a <_CORE_mutex_Surrender+0xee>
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
471cc: 7201 moveq #1,%d1
} else
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
471ce: 2568 0008 005e movel %a0@(8),%a2@(94)
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
471d4: 202a 0046 movel %a2@(70),%d0
#endif
{
the_mutex->holder = the_thread;
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
471d8: 2541 0052 movel %d1,%a2@(82)
switch ( the_mutex->Attributes.discipline ) {
471dc: 123c 0002 moveb #2,%d1
} else
#endif
{
the_mutex->holder = the_thread;
471e0: 2548 005a movel %a0,%a2@(90)
the_mutex->holder_id = the_thread->Object.id;
the_mutex->nest_count = 1;
switch ( the_mutex->Attributes.discipline ) {
471e4: b280 cmpl %d0,%d1
471e6: 6764 beqs 4724c <_CORE_mutex_Surrender+0xe0> <== ALWAYS TAKEN
471e8: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
471ec: b280 cmpl %d0,%d1 <== NOT EXECUTED
471ee: 6734 beqs 47224 <_CORE_mutex_Surrender+0xb8> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
471f0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
471f4: 4280 clrl %d0 <== NOT EXECUTED
}
471f6: 4e5e unlk %fp <== NOT EXECUTED
471f8: 4e75 rts <== NOT EXECUTED
_CORE_mutex_Pop_priority( the_mutex, holder );
if ( pop_status != CORE_MUTEX_STATUS_SUCCESSFUL )
return pop_status;
holder->resource_count--;
471fa: 2028 001c movel %a0@(28),%d0
471fe: 5380 subql #1,%d0
47200: 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 &&
47204: 66ac bnes 471b2 <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
47206: 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 &&
4720a: b0a8 0014 cmpl %a0@(20),%d0
4720e: 67a2 beqs 471b2 <_CORE_mutex_Surrender+0x46>
holder->real_priority != holder->current_priority ) {
_Thread_Change_priority( holder, holder->real_priority, true );
47210: 4878 0001 pea 1 <ADD>
47214: 2f00 movel %d0,%sp@-
47216: 2f08 movel %a0,%sp@-
47218: 4eb9 0004 8424 jsr 48424 <_Thread_Change_priority>
4721e: 4fef 000c lea %sp@(12),%sp
47222: 608e bras 471b2 <_CORE_mutex_Surrender+0x46>
the_thread->resource_count++;
break;
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
if (the_mutex->Attributes.priority_ceiling <
47224: 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++;
47228: 52a8 001c addql #1,%a0@(28) <== NOT EXECUTED
if (the_mutex->Attributes.priority_ceiling <
4722c: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
47230: 64be bccs 471f0 <_CORE_mutex_Surrender+0x84> <== NOT EXECUTED
the_thread->current_priority){
_Thread_Change_priority(
47232: 42a7 clrl %sp@- <== NOT EXECUTED
47234: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47236: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47238: 4eb9 0004 8424 jsr 48424 <_Thread_Change_priority> <== NOT EXECUTED
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
4723e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
case CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
if (the_mutex->Attributes.priority_ceiling <
the_thread->current_priority){
_Thread_Change_priority(
47242: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47246: 4280 clrl %d0 <== NOT EXECUTED
}
47248: 4e5e unlk %fp <== NOT EXECUTED
4724a: 4e75 rts <== NOT EXECUTED
4724c: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47250: 4280 clrl %d0
case CORE_MUTEX_DISCIPLINES_FIFO:
case CORE_MUTEX_DISCIPLINES_PRIORITY:
break;
case CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT:
_CORE_mutex_Push_priority( the_mutex, the_thread );
the_thread->resource_count++;
47252: 52a8 001c addql #1,%a0@(28)
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47256: 4e5e unlk %fp
47258: 4e75 rts
}
break;
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
4725a: 7001 moveq #1,%d0
4725c: 2540 004e movel %d0,%a2@(78)
return CORE_MUTEX_STATUS_SUCCESSFUL;
}
47260: 246e fffc moveal %fp@(-4),%a2
}
}
} else
the_mutex->lock = CORE_MUTEX_UNLOCKED;
return CORE_MUTEX_STATUS_SUCCESSFUL;
47264: 4200 clrb %d0
}
47266: 4e5e unlk %fp
...
000472c0 <_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
)
{
472c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
472c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472c6: 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)) ) {
472ca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
472cc: 4eb9 0004 8c60 jsr 48c60 <_Thread_queue_Dequeue> <== NOT EXECUTED
472d2: 588f addql #4,%sp <== NOT EXECUTED
472d4: 4a80 tstl %d0 <== NOT EXECUTED
472d6: 670a beqs 472e2 <_CORE_semaphore_Surrender+0x22> <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
472d8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
472dc: 4280 clrl %d0 <== NOT EXECUTED
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
}
return status;
}
472de: 4e5e unlk %fp <== NOT EXECUTED
472e0: 4e75 rts <== NOT EXECUTED
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
(*api_semaphore_mp_support) ( the_thread, id );
#endif
} else {
_ISR_Disable( level );
472e2: 303c 0700 movew #1792,%d0 <== NOT EXECUTED
472e6: 40c1 movew %sr,%d1 <== NOT EXECUTED
472e8: 8081 orl %d1,%d0 <== NOT EXECUTED
472ea: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
472ec: 202a 0048 movel %a2@(72),%d0 <== NOT EXECUTED
472f0: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
472f4: 6412 bccs 47308 <_CORE_semaphore_Surrender+0x48> <== NOT EXECUTED
the_semaphore->count += 1;
472f6: 5280 addql #1,%d0 <== NOT EXECUTED
472f8: 2540 0048 movel %d0,%a2@(72) <== NOT EXECUTED
{
Thread_Control *the_thread;
ISR_Level level;
CORE_semaphore_Status status;
status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
472fc: 4280 clrl %d0 <== NOT EXECUTED
_ISR_Disable( level );
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
the_semaphore->count += 1;
else
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
_ISR_Enable( level );
472fe: 46c1 movew %d1,%sr <== NOT EXECUTED
}
return status;
}
47300: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47304: 4e5e unlk %fp <== NOT EXECUTED
47306: 4e75 rts <== NOT EXECUTED
} else {
_ISR_Disable( level );
if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
the_semaphore->count += 1;
else
status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;
47308: 7004 moveq #4,%d0 <== NOT EXECUTED
_ISR_Enable( level );
4730a: 46c1 movew %d1,%sr <== NOT EXECUTED
4730c: 60f2 bras 47300 <_CORE_semaphore_Surrender+0x40> <== NOT EXECUTED
...
0004759c <_Chain_Append_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
4759c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Append_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
475a2: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
475a6: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
475aa: 2f0a movel %a2,%sp@- <== NOT EXECUTED
475ac: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
475b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
475b2: 40c2 movew %sr,%d2 <== NOT EXECUTED
475b4: 8082 orl %d2,%d0 <== NOT EXECUTED
475b6: 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 );
475b8: 2209 movel %a1,%d1 <== NOT EXECUTED
475ba: 5881 addql #4,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
475bc: b291 cmpl %a1@,%d1 <== NOT EXECUTED
475be: 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;
475c0: 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 )
475c4: 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;
475c6: 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;
475ca: 2081 movel %d1,%a0@ <== NOT EXECUTED
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
475cc: 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;
475d0: 2488 movel %a0,%a2@ <== NOT EXECUTED
was_empty = _Chain_Append_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
475d2: 46c2 movew %d2,%sr <== NOT EXECUTED
return was_empty;
}
475d4: 241f movel %sp@+,%d2 <== NOT EXECUTED
475d6: 245f moveal %sp@+,%a2 <== NOT EXECUTED
475d8: 4e5e unlk %fp <== NOT EXECUTED
0004763c <_Chain_Get_with_empty_check>:
)
{
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
4763c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Get_with_empty_check(
Chain_Control *chain,
Chain_Node **node
)
{
47642: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47646: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4764a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4764c: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
47650: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
47652: 40c1 movew %sr,%d1 <== NOT EXECUTED
47654: 8081 orl %d1,%d0 <== NOT EXECUTED
47656: 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 );
47658: 2008 movel %a0,%d0 <== NOT EXECUTED
4765a: 5880 addql #4,%d0 <== NOT EXECUTED
Chain_Node *old_first = head->next;
4765c: 2250 moveal %a0@,%a1 <== NOT EXECUTED
if ( old_first != tail ) {
4765e: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
47660: 671a beqs 4767c <_Chain_Get_with_empty_check+0x40><== NOT EXECUTED
Chain_Node *new_first = old_first->next;
47662: 2451 moveal %a1@,%a2 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
47664: b5c0 cmpal %d0,%a2 <== NOT EXECUTED
47666: 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;
47668: 208a movel %a2,%a0@ <== NOT EXECUTED
new_first->previous = head;
*the_node = old_first;
is_empty_now = new_first == tail;
4766a: 4480 negl %d0 <== NOT EXECUTED
if ( old_first != tail ) {
Chain_Node *new_first = old_first->next;
head->next = new_first;
new_first->previous = head;
4766c: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
*the_node = old_first;
47670: 2689 movel %a1,%a3@ <== NOT EXECUTED
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
47672: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
47674: 245f moveal %sp@+,%a2 <== NOT EXECUTED
47676: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47678: 4e5e unlk %fp <== NOT EXECUTED
4767a: 4e75 rts <== NOT EXECUTED
is_empty_now = new_first == tail;
} else
*the_node = NULL;
4767c: 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;
4767e: 7001 moveq #1,%d0 <== NOT EXECUTED
ISR_Level level;
bool is_empty_now;
_ISR_Disable( level );
is_empty_now = _Chain_Get_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
47680: 46c1 movew %d1,%sr <== NOT EXECUTED
return is_empty_now;
}
47682: 245f moveal %sp@+,%a2 <== NOT EXECUTED
47684: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47686: 4e5e unlk %fp <== NOT EXECUTED
...
0004b934 <_Chain_Initialize>:
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4b934: 4e56 ffec linkw %fp,#-20
4b938: 202e 0010 movel %fp@(16),%d0
4b93c: 48d7 043c moveml %d2-%d5/%a2,%sp@
4b940: 246e 0008 moveal %fp@(8),%a2
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4b944: 280a movel %a2,%d4
4b946: 5884 addql #4,%d4
Chain_Control *the_chain,
void *starting_address,
size_t number_nodes,
size_t node_size
)
{
4b948: 262e 000c movel %fp@(12),%d3
4b94c: 242e 0014 movel %fp@(20),%d2
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
4b950: 42aa 0004 clrl %a2@(4)
while ( count-- ) {
4b954: 4a80 tstl %d0
4b956: 6740 beqs 4b998 <_Chain_Initialize+0x64> <== NEVER TAKEN
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
Chain_Node *next = starting_address;
4b958: 2043 moveal %d3,%a0
)
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
4b95a: 224a moveal %a2,%a1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b95c: 5380 subql #1,%d0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b95e: 2208 movel %a0,%d1
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b960: 2a00 movel %d0,%d5
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b962: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4b964: 2288 movel %a0,%a1@
next->previous = current;
4b966: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b96a: 4a80 tstl %d0
4b96c: 6714 beqs 4b982 <_Chain_Initialize+0x4e>
4b96e: 2248 moveal %a0,%a1
current->next = next;
next->previous = current;
current = next;
next = (Chain_Node *)
4b970: 2041 moveal %d1,%a0
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b972: 2208 movel %a0,%d1
4b974: 5380 subql #1,%d0
4b976: d282 addl %d2,%d1
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
current->next = next;
4b978: 2288 movel %a0,%a1@
next->previous = current;
4b97a: 2149 0004 movel %a1,%a0@(4)
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b97e: 4a80 tstl %d0
4b980: 66ec bnes 4b96e <_Chain_Initialize+0x3a>
* node_size - size of node in bytes
*
* Output parameters: NONE
*/
void _Chain_Initialize(
4b982: 4c05 2800 mulsl %d5,%d2
Chain_Node *current = head;
Chain_Node *next = starting_address;
head->previous = NULL;
while ( count-- ) {
4b986: 2043 moveal %d3,%a0
4b988: d1c2 addal %d2,%a0
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4b98a: 2548 0008 movel %a0,%a2@(8)
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4b98e: 2084 movel %d4,%a0@
tail->previous = current;
}
4b990: 4cd7 043c moveml %sp@,%d2-%d5/%a2
4b994: 4e5e unlk %fp
4b996: 4e75 rts
)
{
size_t count = number_nodes;
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *current = head;
4b998: 204a moveal %a2,%a0 <== NOT EXECUTED
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
tail->previous = current;
4b99a: 2548 0008 movel %a0,%a2@(8) <== NOT EXECUTED
current = next;
next = (Chain_Node *)
_Addresses_Add_offset( (void *) next, node_size );
}
current->next = tail;
4b99e: 2084 movel %d4,%a0@ <== NOT EXECUTED
tail->previous = current;
}
4b9a0: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
4b9a4: 4e5e unlk %fp <== NOT EXECUTED
000476f8 <_Chain_Prepend_with_empty_check>:
)
{
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
476f8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
bool _Chain_Prepend_with_empty_check(
Chain_Control *chain,
Chain_Node *node
)
{
476fe: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47702: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
47706: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47708: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
4770c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
ISR_Level level;
bool was_empty;
_ISR_Disable( level );
4770e: 40c1 movew %sr,%d1 <== NOT EXECUTED
47710: 8081 orl %d1,%d0 <== NOT EXECUTED
47712: 46c0 movew %d0,%sr <== NOT EXECUTED
was_empty = _Chain_Prepend_with_empty_check_unprotected( chain, node );
_ISR_Enable( level );
return was_empty;
}
47714: 2453 moveal %a3@,%a2 <== NOT EXECUTED
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
47716: 224b moveal %a3,%a1 <== NOT EXECUTED
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
47718: 214b 0004 movel %a3,%a0@(4) <== NOT EXECUTED
before_node = after_node->next;
after_node->next = the_node;
4771c: 22c8 movel %a0,%a1@+ <== NOT EXECUTED
the_node->next = before_node;
before_node->previous = the_node;
4771e: 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;
47722: 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 );
47724: 46c1 movew %d1,%sr <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
47726: b3ca cmpal %a2,%a1 <== NOT EXECUTED
47728: 57c0 seq %d0 <== NOT EXECUTED
return was_empty;
}
4772a: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4772c: 4480 negl %d0 <== NOT EXECUTED
4772e: 265f moveal %sp@+,%a3 <== NOT EXECUTED
47730: 4e5e unlk %fp <== NOT EXECUTED
00045e24 <_Event_Seize>:
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
_ISR_Disable( level );
45e24: 203c 0000 0700 movel #1792,%d0
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45e2a: 4e56 ffec linkw %fp,#-20
45e2e: 222e 0008 movel %fp@(8),%d1
45e32: 48d7 043c moveml %d2-%d5/%a2,%sp@
rtems_event_set pending_events;
ISR_Level level;
RTEMS_API_Control *api;
Thread_blocking_operation_States sync_state;
executing = _Thread_Executing;
45e36: 2479 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a2
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45e3c: 242e 000c movel %fp@(12),%d2
45e40: 2a2e 0010 movel %fp@(16),%d5
45e44: 226e 0014 moveal %fp@(20),%a1
ISR_Level level;
RTEMS_API_Control *api;
Thread_blocking_operation_States sync_state;
executing = _Thread_Executing;
executing->Wait.return_code = RTEMS_SUCCESSFUL;
45e48: 42aa 0034 clrl %a2@(52)
api = executing->API_Extensions[ THREAD_API_RTEMS ];
45e4c: 206a 00fc moveal %a2@(252),%a0
_ISR_Disable( level );
45e50: 40c4 movew %sr,%d4
45e52: 8084 orl %d4,%d0
45e54: 46c0 movew %d0,%sr
pending_events = api->pending_events;
45e56: 2610 movel %a0@,%d3
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
rtems_event_set the_event_set,
rtems_event_set the_event_condition
)
{
return ( the_event_set & the_event_condition );
45e58: 2001 movel %d1,%d0
45e5a: c083 andl %d3,%d0
seized_events = _Event_sets_Get( pending_events, event_in );
if ( !_Event_sets_Is_empty( seized_events ) &&
45e5c: 670c beqs 45e6a <_Event_Seize+0x46>
45e5e: b081 cmpl %d1,%d0
45e60: 6700 0084 beqw 45ee6 <_Event_Seize+0xc2>
(seized_events == event_in || _Options_Is_any( option_set )) ) {
45e64: 0802 0001 btst #1,%d2 <== NOT EXECUTED
45e68: 667c bnes 45ee6 <_Event_Seize+0xc2> <== NOT EXECUTED
_ISR_Enable( level );
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
45e6a: 0802 0000 btst #0,%d2
45e6e: 6662 bnes 45ed2 <_Event_Seize+0xae> <== NEVER TAKEN
* set properly when we are marked as in the event critical section.
*
* NOTE: Since interrupts are disabled, this isn't that much of an
* issue but better safe than sorry.
*/
executing->Wait.option = (uint32_t) option_set;
45e70: 2542 0030 movel %d2,%a2@(48)
executing->Wait.count = (uint32_t) event_in;
executing->Wait.return_argument = event_out;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45e74: 7401 moveq #1,%d2
*
* NOTE: Since interrupts are disabled, this isn't that much of an
* issue but better safe than sorry.
*/
executing->Wait.option = (uint32_t) option_set;
executing->Wait.count = (uint32_t) event_in;
45e76: 2541 0024 movel %d1,%a2@(36)
executing->Wait.return_argument = event_out;
45e7a: 2549 0028 movel %a1,%a2@(40)
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
45e7e: 23c2 0005 e72c movel %d2,5e72c <_Event_Sync_state>
_ISR_Enable( level );
45e84: 46c4 movew %d4,%sr
if ( ticks ) {
45e86: 4a85 tstl %d5
45e88: 6672 bnes 45efc <_Event_Seize+0xd8>
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
45e8a: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
45e8e: 2f0a movel %a2,%sp@-
45e90: 4eb9 0004 91fc jsr 491fc <_Thread_Set_state>
_ISR_Disable( level );
45e96: 203c 0000 0700 movel #1792,%d0
45e9c: 40c1 movew %sr,%d1
45e9e: 8081 orl %d1,%d0
45ea0: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45ea2: 7401 moveq #1,%d2
45ea4: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
45ea6: 2039 0005 e72c movel 5e72c <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45eac: 42b9 0005 e72c clrl 5e72c <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45eb2: b480 cmpl %d0,%d2
45eb4: 6700 00a4 beqw 45f5a <_Event_Seize+0x136>
* An interrupt completed the thread's blocking request.
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
45eb8: 2d4a 000c movel %a2,%fp@(12) <== NOT EXECUTED
45ebc: 2d41 0010 movel %d1,%fp@(16) <== NOT EXECUTED
}
45ec0: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
* An interrupt completed the thread's blocking request.
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
45ec6: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
45eca: 4e5e unlk %fp <== NOT EXECUTED
* An interrupt completed the thread's blocking request.
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
45ecc: 4ef9 0004 83bc jmp 483bc <_Thread_blocking_operation_Cancel><== NOT EXECUTED
*event_out = seized_events;
return;
}
if ( _Options_Is_no_wait( option_set ) ) {
_ISR_Enable( level );
45ed2: 46c4 movew %d4,%sr <== NOT EXECUTED
executing->Wait.return_code = RTEMS_UNSATISFIED;
45ed4: 720d moveq #13,%d1 <== NOT EXECUTED
45ed6: 2541 0034 movel %d1,%a2@(52) <== NOT EXECUTED
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
}
45eda: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
}
if ( _Options_Is_no_wait( option_set ) ) {
_ISR_Enable( level );
executing->Wait.return_code = RTEMS_UNSATISFIED;
*event_out = seized_events;
45ee0: 2280 movel %d0,%a1@ <== NOT EXECUTED
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
}
45ee2: 4e5e unlk %fp <== NOT EXECUTED
45ee4: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
rtems_event_set the_event_set,
rtems_event_set the_mask
)
{
return ( the_event_set & ~(the_mask) );
45ee6: 2200 movel %d0,%d1
45ee8: 4681 notl %d1
45eea: c283 andl %d3,%d1
45eec: 2081 movel %d1,%a0@
if ( !_Event_sets_Is_empty( seized_events ) &&
(seized_events == event_in || _Options_Is_any( option_set )) ) {
api->pending_events =
_Event_sets_Clear( pending_events, seized_events );
_ISR_Enable( level );
45eee: 46c4 movew %d4,%sr
*event_out = seized_events;
45ef0: 2280 movel %d0,%a1@
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
}
45ef2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
45ef8: 4e5e unlk %fp
45efa: 4e75 rts
_Event_Sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
_ISR_Enable( level );
if ( ticks ) {
_Watchdog_Initialize(
45efc: 202a 0008 movel %a2@(8),%d0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45f00: 223c 0004 60ec movel #286956,%d1
the_watchdog->id = id;
45f06: 2540 0068 movel %d0,%a2@(104)
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
45f0a: 2541 0064 movel %d1,%a2@(100)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
45f0e: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
45f12: 42aa 006c clrl %a2@(108)
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
45f16: 2545 0054 movel %d5,%a2@(84)
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
45f1a: 486a 0048 pea %a2@(72)
45f1e: 4879 0005 e618 pea 5e618 <_Watchdog_Ticks_chain>
45f24: 4eb9 0004 9804 jsr 49804 <_Watchdog_Insert>
45f2a: 508f addql #8,%sp
NULL
);
_Watchdog_Insert_ticks( &executing->Timer, ticks );
}
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
45f2c: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb>
45f30: 2f0a movel %a2,%sp@-
45f32: 4eb9 0004 91fc jsr 491fc <_Thread_Set_state>
_ISR_Disable( level );
45f38: 203c 0000 0700 movel #1792,%d0
45f3e: 40c1 movew %sr,%d1
45f40: 8081 orl %d1,%d0
45f42: 46c0 movew %d0,%sr
sync_state = _Event_Sync_state;
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45f44: 7401 moveq #1,%d2
45f46: 508f addql #8,%sp
_Thread_Set_state( executing, STATES_WAITING_FOR_EVENT );
_ISR_Disable( level );
sync_state = _Event_Sync_state;
45f48: 2039 0005 e72c movel 5e72c <_Event_Sync_state>,%d0
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
45f4e: 42b9 0005 e72c clrl 5e72c <_Event_Sync_state>
if ( sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED ) {
45f54: b480 cmpl %d0,%d2
45f56: 6600 ff60 bnew 45eb8 <_Event_Seize+0x94>
_ISR_Enable( level );
45f5a: 46c1 movew %d1,%sr
* The blocking thread was satisfied by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
_Thread_blocking_operation_Cancel( sync_state, executing, level );
}
45f5c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
45f62: 4e5e unlk %fp
...
00045fc4 <_Event_Surrender>:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
option_set = (rtems_option) the_thread->Wait.option;
_ISR_Disable( level );
45fc4: 203c 0000 0700 movel #1792,%d0
*/
void _Event_Surrender(
Thread_Control *the_thread
)
{
45fca: 4e56 ffec linkw %fp,#-20
45fce: 48d7 043c moveml %d2-%d5/%a2,%sp@
45fd2: 246e 0008 moveal %fp@(8),%a2
rtems_event_set event_condition;
rtems_event_set seized_events;
rtems_option option_set;
RTEMS_API_Control *api;
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
45fd6: 206a 00fc moveal %a2@(252),%a0
option_set = (rtems_option) the_thread->Wait.option;
45fda: 282a 0030 movel %a2@(48),%d4
_ISR_Disable( level );
45fde: 40c3 movew %sr,%d3
45fe0: 8083 orl %d3,%d0
45fe2: 46c0 movew %d0,%sr
pending_events = api->pending_events;
event_condition = (rtems_event_set) the_thread->Wait.count;
45fe4: 222a 0024 movel %a2@(36),%d1
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(
rtems_event_set the_event_set,
rtems_event_set the_event_condition
)
{
return ( the_event_set & the_event_condition );
45fe8: 2001 movel %d1,%d0
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
option_set = (rtems_option) the_thread->Wait.option;
_ISR_Disable( level );
pending_events = api->pending_events;
45fea: 2410 movel %a0@,%d2
45fec: c082 andl %d2,%d0
seized_events = _Event_sets_Get( pending_events, event_condition );
/*
* No events were seized in this operation
*/
if ( _Event_sets_Is_empty( seized_events ) ) {
45fee: 6776 beqs 46066 <_Event_Surrender+0xa2>
/*
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
45ff0: 4ab9 0005 e6f4 tstl 5e6f4 <_Per_CPU_Information+0x8>
45ff6: 670a beqs 46002 <_Event_Surrender+0x3e> <== ALWAYS TAKEN
45ff8: b5f9 0005 e6f8 cmpal 5e6f8 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
45ffe: 6700 00a0 beqw 460a0 <_Event_Surrender+0xdc> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_EVENT);
46002: 2a2a 0010 movel %a2@(16),%d5
46006: 0285 0000 0100 andil #256,%d5
}
/*
* Otherwise, this is a normal send to another thread
*/
if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {
4600c: 674c beqs 4605a <_Event_Surrender+0x96> <== NEVER TAKEN
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
4600e: b081 cmpl %d1,%d0
46010: 6706 beqs 46018 <_Event_Surrender+0x54> <== ALWAYS TAKEN
46012: 0804 0001 btst #1,%d4 <== NOT EXECUTED
46016: 6742 beqs 4605a <_Event_Surrender+0x96> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Clear(
rtems_event_set the_event_set,
rtems_event_set the_mask
)
{
return ( the_event_set & ~(the_mask) );
46018: 2200 movel %d0,%d1
4601a: 4681 notl %d1
4601c: c282 andl %d2,%d1
4601e: 2081 movel %d1,%a0@
api->pending_events = _Event_sets_Clear( pending_events, seized_events );
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
46020: 206a 0028 moveal %a2@(40),%a0
* Otherwise, this is a normal send to another thread
*/
if ( _States_Is_waiting_for_event( the_thread->current_state ) ) {
if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
api->pending_events = _Event_sets_Clear( pending_events, seized_events );
the_thread->Wait.count = 0;
46024: 42aa 0024 clrl %a2@(36)
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
46028: 2080 movel %d0,%a0@
_ISR_Flash( level );
4602a: 203c 0000 0700 movel #1792,%d0
46030: 46c3 movew %d3,%sr
46032: 8083 orl %d3,%d0
46034: 46c0 movew %d0,%sr
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
46036: 7a02 moveq #2,%d5
46038: baaa 0050 cmpl %a2@(80),%d5
4603c: 6734 beqs 46072 <_Event_Surrender+0xae>
_ISR_Enable( level );
4603e: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
46040: 2f3c 1003 fff8 movel #268697592,%sp@-
46046: 2f0a movel %a2,%sp@-
46048: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state>
4604e: 508f addql #8,%sp
}
return;
}
}
_ISR_Enable( level );
}
46050: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
46056: 4e5e unlk %fp
46058: 4e75 rts
_Thread_Unblock( the_thread );
}
return;
}
}
_ISR_Enable( level );
4605a: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4605c: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
46062: 4e5e unlk %fp <== NOT EXECUTED
46064: 4e75 rts <== NOT EXECUTED
/*
* No events were seized in this operation
*/
if ( _Event_sets_Is_empty( seized_events ) ) {
_ISR_Enable( level );
46066: 46c3 movew %d3,%sr
}
return;
}
}
_ISR_Enable( level );
}
46068: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
4606e: 4e5e unlk %fp
46070: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
46072: 7003 moveq #3,%d0
46074: 2540 0050 movel %d0,%a2@(80)
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
46078: 46c3 movew %d3,%sr
(void) _Watchdog_Remove( &the_thread->Timer );
4607a: 486a 0048 pea %a2@(72)
4607e: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove>
46084: 2f3c 1003 fff8 movel #268697592,%sp@-
4608a: 2f0a movel %a2,%sp@-
4608c: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state>
46092: 4fef 000c lea %sp@(12),%sp
}
return;
}
}
_ISR_Enable( level );
}
46096: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
4609c: 4e5e unlk %fp
4609e: 4e75 rts
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
_Thread_Is_executing( the_thread ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
460a0: 2279 0005 e72c moveal 5e72c <_Event_Sync_state>,%a1 <== NOT EXECUTED
/*
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
_Thread_Is_executing( the_thread ) &&
460a6: 7a02 moveq #2,%d5 <== NOT EXECUTED
460a8: ba89 cmpl %a1,%d5 <== NOT EXECUTED
460aa: 6710 beqs 460bc <_Event_Surrender+0xf8> <== NOT EXECUTED
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
460ac: 2279 0005 e72c moveal 5e72c <_Event_Sync_state>,%a1 <== NOT EXECUTED
* If we are in an ISR and sending to the current thread, then
* we have a critical section issue to deal with.
*/
if ( _ISR_Is_in_progress() &&
_Thread_Is_executing( the_thread ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
460b2: 1a3c 0001 moveb #1,%d5 <== NOT EXECUTED
460b6: ba89 cmpl %a1,%d5 <== NOT EXECUTED
460b8: 6600 ff48 bnew 46002 <_Event_Surrender+0x3e> <== NOT EXECUTED
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
460bc: b081 cmpl %d1,%d0 <== NOT EXECUTED
460be: 6706 beqs 460c6 <_Event_Surrender+0x102> <== NOT EXECUTED
460c0: 0804 0001 btst #1,%d4 <== NOT EXECUTED
460c4: 671a beqs 460e0 <_Event_Surrender+0x11c> <== NOT EXECUTED
460c6: 2200 movel %d0,%d1 <== NOT EXECUTED
460c8: 4681 notl %d1 <== NOT EXECUTED
460ca: c282 andl %d2,%d1 <== NOT EXECUTED
460cc: 2081 movel %d1,%a0@ <== NOT EXECUTED
api->pending_events = _Event_sets_Clear( pending_events,seized_events );
the_thread->Wait.count = 0;
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
460ce: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
_Thread_Is_executing( the_thread ) &&
((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
api->pending_events = _Event_sets_Clear( pending_events,seized_events );
the_thread->Wait.count = 0;
460d2: 42aa 0024 clrl %a2@(36) <== NOT EXECUTED
*(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
460d6: 2080 movel %d0,%a0@ <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
460d8: 7003 moveq #3,%d0 <== NOT EXECUTED
460da: 23c0 0005 e72c movel %d0,5e72c <_Event_Sync_state> <== NOT EXECUTED
}
_ISR_Enable( level );
460e0: 46c3 movew %d3,%sr <== NOT EXECUTED
}
return;
}
}
_ISR_Enable( level );
}
460e2: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2 <== NOT EXECUTED
460e8: 4e5e unlk %fp <== NOT EXECUTED
000460ec <_Event_Timeout>:
void _Event_Timeout(
Objects_Id id,
void *ignored
)
{
460ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
460f0: 2f03 movel %d3,%sp@- <== NOT EXECUTED
460f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
ISR_Level level;
the_thread = _Thread_Get( id, &location );
460f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
460f8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
460fc: 4eb9 0004 8940 jsr 48940 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
46102: 508f addql #8,%sp <== NOT EXECUTED
46104: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46108: 6642 bnes 4614c <_Event_Timeout+0x60> <== NOT EXECUTED
*
* If it is not satisfied, then it is "nothing happened" and
* this is the "timeout" transition. After a request is satisfied,
* a timeout is not allowed to occur.
*/
_ISR_Disable( level );
4610a: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
46110: 40c2 movew %sr,%d2 <== NOT EXECUTED
46112: 8282 orl %d2,%d1 <== NOT EXECUTED
46114: 46c1 movew %d1,%sr <== NOT EXECUTED
_ISR_Enable( level );
return;
}
#endif
the_thread->Wait.count = 0;
46116: 2040 moveal %d0,%a0 <== NOT EXECUTED
46118: 42a8 0024 clrl %a0@(36) <== NOT EXECUTED
if ( _Thread_Is_executing( the_thread ) ) {
4611c: b0b9 0005 e6f8 cmpl 5e6f8 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
46122: 6734 beqs 46158 <_Event_Timeout+0x6c> <== NOT EXECUTED
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
46124: 7606 moveq #6,%d3 <== NOT EXECUTED
46126: 2040 moveal %d0,%a0 <== NOT EXECUTED
46128: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED
_ISR_Enable( level );
4612c: 46c2 movew %d2,%sr <== NOT EXECUTED
4612e: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
46134: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46136: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
4613c: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
4613e: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
46144: 5380 subql #1,%d0 <== NOT EXECUTED
46146: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
4614c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
46150: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
46154: 4e5e unlk %fp <== NOT EXECUTED
46156: 4e75 rts <== NOT EXECUTED
}
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
46158: 2239 0005 e72c movel 5e72c <_Event_Sync_state>,%d1 <== NOT EXECUTED
4615e: 7601 moveq #1,%d3 <== NOT EXECUTED
46160: b681 cmpl %d1,%d3 <== NOT EXECUTED
46162: 66c0 bnes 46124 <_Event_Timeout+0x38> <== NOT EXECUTED
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
46164: 7606 moveq #6,%d3 <== NOT EXECUTED
46166: 2040 moveal %d0,%a0 <== NOT EXECUTED
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
46168: 7202 moveq #2,%d1 <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
4616a: 2143 0034 movel %d3,%a0@(52) <== NOT EXECUTED
#endif
the_thread->Wait.count = 0;
if ( _Thread_Is_executing( the_thread ) ) {
if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
_Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4616e: 23c1 0005 e72c movel %d1,5e72c <_Event_Sync_state> <== NOT EXECUTED
}
the_thread->Wait.return_code = RTEMS_TIMEOUT;
_ISR_Enable( level );
46174: 46c2 movew %d2,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
46176: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4617c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4617e: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Thread_Unnest_dispatch();
break;
46184: 508f addql #8,%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
46186: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4618c: 5380 subql #1,%d0 <== NOT EXECUTED
4618e: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
46194: 60b6 bras 4614c <_Event_Timeout+0x60> <== NOT EXECUTED
...
0004bb88 <_Heap_Allocate_aligned_with_boundary>:
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4bb88: 4e56 ffcc linkw %fp,#-52
4bb8c: 226e 000c moveal %fp@(12),%a1
4bb90: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
4bb94: 246e 0008 moveal %fp@(8),%a2
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
4bb98: 2e09 movel %a1,%d7
4bb9a: 5887 addql #4,%d7
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4bb9c: 202a 0010 movel %a2@(16),%d0
Heap_Control *heap,
uintptr_t alloc_size,
uintptr_t alignment,
uintptr_t boundary
)
{
4bba0: 222e 0010 movel %fp@(16),%d1
4bba4: 282e 0014 movel %fp@(20),%d4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_size_floor = alloc_size + HEAP_BLOCK_HEADER_SIZE
- HEAP_ALLOC_BONUS;
uintptr_t const page_size = heap->page_size;
4bba8: 2d40 fffc movel %d0,%fp@(-4)
Heap_Block *block = NULL;
uintptr_t alloc_begin = 0;
uint32_t search_count = 0;
bool search_again = false;
if ( block_size_floor < alloc_size ) {
4bbac: be89 cmpl %a1,%d7
4bbae: 6500 014e bcsw 4bcfe <_Heap_Allocate_aligned_with_boundary+0x176>
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
4bbb2: 4a84 tstl %d4
4bbb4: 6600 0144 bnew 4bcfa <_Heap_Allocate_aligned_with_boundary+0x172>
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4bbb8: 206a 0008 moveal %a2@(8),%a0
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4bbbc: b1ca cmpal %a2,%a0
4bbbe: 6700 013e beqw 4bcfe <_Heap_Allocate_aligned_with_boundary+0x176>
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4bbc2: 242e fffc movel %fp@(-4),%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4bbc6: 7c04 moveq #4,%d6
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4bbc8: 5e82 addql #7,%d2
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4bbca: 9c89 subl %a1,%d6
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4bbcc: 7601 moveq #1,%d3
4bbce: 2647 moveal %d7,%a3
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4bbd0: 2d42 fff8 movel %d2,%fp@(-8)
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
4bbd4: 2d46 fff4 movel %d6,%fp@(-12)
/*
* The HEAP_PREV_BLOCK_USED flag is always set in the block size_and_flag
* field. Thus the value is about one unit larger than the real block
* size. The greater than operator takes this into account.
*/
if ( block->size_and_flag > block_size_floor ) {
4bbd8: 2028 0004 movel %a0@(4),%d0
4bbdc: b08b cmpl %a3,%d0
4bbde: 630e blss 4bbee <_Heap_Allocate_aligned_with_boundary+0x66>
if ( alignment == 0 ) {
4bbe0: 4a81 tstl %d1
4bbe2: 661c bnes 4bc00 <_Heap_Allocate_aligned_with_boundary+0x78>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4bbe4: 2408 movel %a0,%d2
4bbe6: 5082 addql #8,%d2
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4bbe8: 4a82 tstl %d2
4bbea: 6600 00de bnew 4bcca <_Heap_Allocate_aligned_with_boundary+0x142>
break;
}
block = block->next;
4bbee: 2003 movel %d3,%d0
4bbf0: 5280 addql #1,%d0
4bbf2: 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 ) {
4bbf6: b1ca cmpal %a2,%a0
4bbf8: 6700 0110 beqw 4bd0a <_Heap_Allocate_aligned_with_boundary+0x182>
4bbfc: 2600 movel %d0,%d3 <== NOT EXECUTED
4bbfe: 60d8 bras 4bbd8 <_Heap_Allocate_aligned_with_boundary+0x50><== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4bc00: 7efe moveq #-2,%d7
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
4bc02: 4be8 0008 lea %a0@(8),%a5
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4bc06: c087 andl %d7,%d0
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4bc08: 286a 0014 moveal %a2@(20),%a4
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
4bc0c: d088 addl %a0,%d0
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
+ HEAP_BLOCK_HEADER_SIZE + page_size - 1;
4bc0e: 2a2e fff8 movel %fp@(-8),%d5
4bc12: 9a8c subl %a4,%d5
uintptr_t alloc_end = block_end + HEAP_ALLOC_BONUS;
uintptr_t alloc_begin = alloc_end - alloc_size;
4bc14: 242e fff4 movel %fp@(-12),%d2
4bc18: d480 addl %d0,%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4bc1a: 2c02 movel %d2,%d6
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const block_end = block_begin + block_size;
uintptr_t const alloc_begin_floor = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_begin_ceiling = block_end - min_block_size
4bc1c: d085 addl %d5,%d0
4bc1e: 4c41 6005 remul %d1,%d5,%d6
4bc22: 9485 subl %d5,%d2
uintptr_t alloc_begin = alloc_end - alloc_size;
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
/* Ensure that the we have a valid new block at the end */
if ( alloc_begin > alloc_begin_ceiling ) {
4bc24: b480 cmpl %d0,%d2
4bc26: 630a blss 4bc32 <_Heap_Allocate_aligned_with_boundary+0xaa><== ALWAYS TAKEN
4bc28: 2a00 movel %d0,%d5 <== NOT EXECUTED
4bc2a: 4c41 5002 remul %d1,%d2,%d5 <== NOT EXECUTED
4bc2e: 9082 subl %d2,%d0 <== NOT EXECUTED
4bc30: 2400 movel %d0,%d2 <== NOT EXECUTED
}
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
4bc32: 4a84 tstl %d4
4bc34: 676a beqs 4bca0 <_Heap_Allocate_aligned_with_boundary+0x118><== ALWAYS TAKEN
/* Ensure that the we have a valid new block at the end */
if ( alloc_begin > alloc_begin_ceiling ) {
alloc_begin = _Heap_Align_down( alloc_begin_ceiling, alignment );
}
alloc_end = alloc_begin + alloc_size;
4bc36: 2002 movel %d2,%d0 <== NOT EXECUTED
4bc38: d089 addl %a1,%d0 <== NOT EXECUTED
4bc3a: 2c00 movel %d0,%d6 <== NOT EXECUTED
4bc3c: 4c44 6005 remul %d4,%d5,%d6 <== NOT EXECUTED
4bc40: 2c00 movel %d0,%d6 <== NOT EXECUTED
4bc42: 9c85 subl %d5,%d6 <== NOT EXECUTED
4bc44: 2a06 movel %d6,%d5 <== NOT EXECUTED
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
4bc46: bc82 cmpl %d2,%d6 <== NOT EXECUTED
4bc48: 6356 blss 4bca0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
4bc4a: bc80 cmpl %d0,%d6 <== NOT EXECUTED
4bc4c: 6452 bccs 4bca0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
alloc_end = alloc_begin + alloc_size;
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
4bc4e: 2c0d movel %a5,%d6 <== NOT EXECUTED
4bc50: dc89 addl %a1,%d6 <== NOT EXECUTED
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
if ( boundary_line < boundary_floor ) {
4bc52: ba86 cmpl %d6,%d5 <== NOT EXECUTED
4bc54: 6598 bcss 4bbee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4bc56: 2405 movel %d5,%d2 <== NOT EXECUTED
4bc58: 9489 subl %a1,%d2 <== NOT EXECUTED
4bc5a: 2a02 movel %d2,%d5 <== NOT EXECUTED
4bc5c: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED
4bc60: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4bc62: 2002 movel %d2,%d0 <== NOT EXECUTED
4bc64: d089 addl %a1,%d0 <== NOT EXECUTED
4bc66: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bc68: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED
4bc6c: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bc6e: 9e85 subl %d5,%d7 <== NOT EXECUTED
4bc70: 2a07 movel %d7,%d5 <== NOT EXECUTED
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
4bc72: be82 cmpl %d2,%d7 <== NOT EXECUTED
4bc74: 632a blss 4bca0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
4bc76: be80 cmpl %d0,%d7 <== NOT EXECUTED
4bc78: 6426 bccs 4bca0 <_Heap_Allocate_aligned_with_boundary+0x118><== NOT EXECUTED
if ( boundary_line < boundary_floor ) {
4bc7a: ba86 cmpl %d6,%d5 <== NOT EXECUTED
4bc7c: 6500 ff70 bcsw 4bbee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
return 0;
}
alloc_begin = boundary_line - alloc_size;
4bc80: 2405 movel %d5,%d2 <== NOT EXECUTED
4bc82: 9489 subl %a1,%d2 <== NOT EXECUTED
4bc84: 2a02 movel %d2,%d5 <== NOT EXECUTED
4bc86: 4c41 5000 remul %d1,%d0,%d5 <== NOT EXECUTED
4bc8a: 9480 subl %d0,%d2 <== NOT EXECUTED
alloc_begin = _Heap_Align_down( alloc_begin, alignment );
alloc_end = alloc_begin + alloc_size;
4bc8c: 2002 movel %d2,%d0 <== NOT EXECUTED
4bc8e: d089 addl %a1,%d0 <== NOT EXECUTED
4bc90: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bc92: 4c44 7005 remul %d4,%d5,%d7 <== NOT EXECUTED
4bc96: 2e00 movel %d0,%d7 <== NOT EXECUTED
4bc98: 9e85 subl %d5,%d7 <== NOT EXECUTED
4bc9a: 2a07 movel %d7,%d5 <== NOT EXECUTED
/* Ensure boundary constaint */
if ( boundary != 0 ) {
uintptr_t const boundary_floor = alloc_begin_floor + alloc_size;
uintptr_t boundary_line = _Heap_Align_down( alloc_end, boundary );
while ( alloc_begin < boundary_line && boundary_line < alloc_end ) {
4bc9c: be82 cmpl %d2,%d7 <== NOT EXECUTED
4bc9e: 62d6 bhis 4bc76 <_Heap_Allocate_aligned_with_boundary+0xee><== NOT EXECUTED
boundary_line = _Heap_Align_down( alloc_end, boundary );
}
}
/* Ensure that the we have a valid new block at the beginning */
if ( alloc_begin >= alloc_begin_floor ) {
4bca0: b48d cmpl %a5,%d2
4bca2: 6500 ff4a bcsw 4bbee <_Heap_Allocate_aligned_with_boundary+0x66>
4bca6: 2e2e fffc movel %fp@(-4),%d7
4bcaa: 2c02 movel %d2,%d6
4bcac: 70f8 moveq #-8,%d0
4bcae: 9088 subl %a0,%d0
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4bcb0: d082 addl %d2,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4bcb2: 4c47 6005 remul %d7,%d5,%d6
uintptr_t const alloc_block_begin =
(uintptr_t) _Heap_Block_of_alloc_area( alloc_begin, page_size );
uintptr_t const free_size = alloc_block_begin - block_begin;
4bcb6: 9085 subl %d5,%d0
if ( free_size >= min_block_size || free_size == 0 ) {
4bcb8: b08c cmpl %a4,%d0
4bcba: 6400 ff2c bccw 4bbe8 <_Heap_Allocate_aligned_with_boundary+0x60>
4bcbe: 4a80 tstl %d0 <== NOT EXECUTED
4bcc0: 6600 ff2c bnew 4bbee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
}
/* Statistics */
++search_count;
if ( alloc_begin != 0 ) {
4bcc4: 4a82 tstl %d2 <== NOT EXECUTED
4bcc6: 6700 ff26 beqw 4bbee <_Heap_Allocate_aligned_with_boundary+0x66><== NOT EXECUTED
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
stats->searches += search_count;
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4bcca: 2f09 movel %a1,%sp@-
search_again = _Heap_Protection_free_delayed_blocks( heap, alloc_begin );
} while ( search_again );
if ( alloc_begin != 0 ) {
/* Statistics */
++stats->allocs;
4bccc: 52aa 0048 addql #1,%a2@(72)
stats->searches += search_count;
4bcd0: d7aa 004c addl %d3,%a2@(76)
block = _Heap_Block_allocate( heap, block, alloc_begin, alloc_size );
4bcd4: 2f02 movel %d2,%sp@-
4bcd6: 2f08 movel %a0,%sp@-
4bcd8: 2f0a movel %a2,%sp@-
4bcda: 4eb9 0004 76fa jsr 476fa <_Heap_Block_allocate>
4bce0: 4fef 0010 lea %sp@(16),%sp
4bce4: 2002 movel %d2,%d0
boundary
);
}
/* Statistics */
if ( stats->max_search < search_count ) {
4bce6: b6aa 0044 cmpl %a2@(68),%d3
4bcea: 6304 blss 4bcf0 <_Heap_Allocate_aligned_with_boundary+0x168>
stats->max_search = search_count;
4bcec: 2543 0044 movel %d3,%a2@(68)
}
return (void *) alloc_begin;
}
4bcf0: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
4bcf6: 4e5e unlk %fp
4bcf8: 4e75 rts
/* Integer overflow occured */
return NULL;
}
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
4bcfa: b889 cmpl %a1,%d4 <== NOT EXECUTED
4bcfc: 6410 bccs 4bd0e <_Heap_Allocate_aligned_with_boundary+0x186><== NOT EXECUTED
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4bcfe: 4280 clrl %d0 <== NOT EXECUTED
if ( stats->max_search < search_count ) {
stats->max_search = search_count;
}
return (void *) alloc_begin;
}
4bd00: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4bd06: 4e5e unlk %fp <== NOT EXECUTED
4bd08: 4e75 rts <== NOT EXECUTED
do {
Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
block = _Heap_Free_list_first( heap );
while ( block != free_list_tail ) {
4bd0a: 4280 clrl %d0
4bd0c: 60d8 bras 4bce6 <_Heap_Allocate_aligned_with_boundary+0x15e>
if ( boundary != 0 ) {
if ( boundary < alloc_size ) {
return NULL;
}
if ( alignment == 0 ) {
4bd0e: 4a81 tstl %d1 <== NOT EXECUTED
4bd10: 6600 fea6 bnew 4bbb8 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
alignment = page_size;
4bd14: 2200 movel %d0,%d1 <== NOT EXECUTED
4bd16: 6000 fea0 braw 4bbb8 <_Heap_Allocate_aligned_with_boundary+0x30><== NOT EXECUTED
...
000476fa <_Heap_Block_allocate>:
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
476fa: 70fe moveq #-2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
476fc: 4e56 ffe0 linkw %fp,#-32
47700: 206e 000c moveal %fp@(12),%a0
47704: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47708: 2428 0004 movel %a0@(4),%d2
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4770c: 7801 moveq #1,%d4
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4770e: c082 andl %d2,%d0
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47710: 222e 0010 movel %fp@(16),%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
47714: 49f0 0800 lea %a0@(00000000,%d0:l),%a4
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
47718: 2641 moveal %d1,%a3
4771a: 518b subql #8,%a3
Heap_Statistics *const stats = &heap->stats;
uintptr_t const alloc_area_begin = _Heap_Alloc_area_of_block( block );
uintptr_t const alloc_area_offset = alloc_begin - alloc_area_begin;
4771c: 2a0b movel %a3,%d5
4771e: 9a88 subl %a0,%d5
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
47720: c8ac 0004 andl %a4@(4),%d4
Heap_Control *heap,
Heap_Block *block,
uintptr_t alloc_begin,
uintptr_t alloc_size
)
{
47724: 246e 0008 moveal %fp@(8),%a2
47728: 262e 0014 movel %fp@(20),%d3
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
4772c: 4a84 tstl %d4
4772e: 6600 0090 bnew 477c0 <_Heap_Block_allocate+0xc6>
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47732: 2828 0008 movel %a0@(8),%d4
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
next->prev = prev;
47736: 2a44 moveal %d4,%a5
Heap_Block *free_list_anchor = NULL;
_HAssert( alloc_area_begin <= alloc_begin );
if ( _Heap_Is_free( block ) ) {
free_list_anchor = block->prev;
47738: 2268 000c moveal %a0@(12),%a1
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
4773c: 2344 0008 movel %d4,%a1@(8)
next->prev = prev;
47740: 2b49 000c movel %a1,%a5@(12)
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
++stats->used_blocks;
stats->free_size -= _Heap_Block_size( block );
47744: 91aa 0030 subl %d0,%a2@(48)
free_list_anchor = block->prev;
_Heap_Free_list_remove( block );
/* Statistics */
--stats->free_blocks;
47748: 53aa 0038 subql #1,%a2@(56)
++stats->used_blocks;
4774c: 52aa 0040 addql #1,%a2@(64)
stats->free_size -= _Heap_Block_size( block );
} else {
free_list_anchor = _Heap_Free_list_head( heap );
}
if ( alloc_area_offset < heap->page_size ) {
47750: 202a 0010 movel %a2@(16),%d0
47754: b085 cmpl %d5,%d0
47756: 6272 bhis 477ca <_Heap_Block_allocate+0xd0>
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
47758: 4c40 1004 remul %d0,%d4,%d1
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4775c: 97c4 subal %d4,%a3
_Heap_Block_of_alloc_area( alloc_begin, heap->page_size );
uintptr_t const new_block_begin = (uintptr_t) new_block;
uintptr_t const new_block_size = block_end - new_block_begin;
block_end = new_block_begin;
block_size = block_end - block_begin;
4775e: 200b movel %a3,%d0
47760: 9088 subl %a0,%d0
_HAssert( block_size >= heap->min_block_size );
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
47762: d1aa 0030 addl %d0,%a2@(48)
uintptr_t block_end = block_begin + block_size;
Heap_Block *const new_block =
_Heap_Block_of_alloc_area( alloc_begin, heap->page_size );
uintptr_t const new_block_begin = (uintptr_t) new_block;
uintptr_t const new_block_size = block_end - new_block_begin;
47766: 99cb subal %a3,%a4
_HAssert( new_block_size >= heap->min_block_size );
/* Statistics */
stats->free_size += block_size;
if ( _Heap_Is_prev_used( block ) ) {
47768: 0802 0000 btst #0,%d2
4776c: 6774 beqs 477e2 <_Heap_Block_allocate+0xe8> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
4776e: 2a69 0008 moveal %a1@(8),%a5
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
47772: 7401 moveq #1,%d2
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
47774: 2208 movel %a0,%d1
new_block->next = next;
47776: 214d 0008 movel %a5,%a0@(8)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4777a: 8480 orl %d0,%d2
new_block->prev = block_before;
4777c: 2149 000c movel %a1,%a0@(12)
block_before->next = new_block;
47780: 2348 0008 movel %a0,%a1@(8)
next->prev = new_block;
47784: 2b48 000c movel %a0,%a5@(12)
_Heap_Free_list_insert_after( free_list_anchor, block );
free_list_anchor = block;
/* Statistics */
++stats->free_blocks;
47788: 52aa 0038 addql #1,%a2@(56)
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4778c: 2142 0004 movel %d2,%a0@(4)
new_block->prev_size = block_size;
47790: 2680 movel %d0,%a3@
new_block->size_and_flag = new_block_size;
47792: 274c 0004 movel %a4,%a3@(4)
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
47796: 2f03 movel %d3,%sp@-
47798: 2f01 movel %d1,%sp@-
4779a: 2f0b movel %a3,%sp@-
4779c: 2f0a movel %a2,%sp@-
4779e: 4eba fcb0 jsr %pc@(47450 <_Heap_Block_split>)
477a2: 4fef 0010 lea %sp@(16),%sp
alloc_size
);
}
/* Statistics */
if ( stats->min_free_size > stats->free_size ) {
477a6: 202a 0030 movel %a2@(48),%d0
477aa: b0aa 0034 cmpl %a2@(52),%d0
477ae: 6404 bccs 477b4 <_Heap_Block_allocate+0xba> <== NEVER TAKEN
stats->min_free_size = stats->free_size;
477b0: 2540 0034 movel %d0,%a2@(52)
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
477b4: 200b movel %a3,%d0
477b6: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5
477bc: 4e5e unlk %fp
477be: 4e75 rts
stats->free_size -= _Heap_Block_size( block );
} else {
free_list_anchor = _Heap_Free_list_head( heap );
}
if ( alloc_area_offset < heap->page_size ) {
477c0: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
++stats->used_blocks;
stats->free_size -= _Heap_Block_size( block );
} else {
free_list_anchor = _Heap_Free_list_head( heap );
477c4: 224a moveal %a2,%a1 <== NOT EXECUTED
}
if ( alloc_area_offset < heap->page_size ) {
477c6: b085 cmpl %d5,%d0 <== NOT EXECUTED
477c8: 638e blss 47758 <_Heap_Block_allocate+0x5e> <== NOT EXECUTED
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
_Heap_Block_split( heap, block, free_list_anchor, alloc_size );
477ca: 2645 moveal %d5,%a3
477cc: 4873 3800 pea %a3@(00000000,%d3:l)
477d0: 2648 moveal %a0,%a3
477d2: 2f09 movel %a1,%sp@-
477d4: 2f08 movel %a0,%sp@-
477d6: 2f0a movel %a2,%sp@-
477d8: 4eba fc76 jsr %pc@(47450 <_Heap_Block_split>)
477dc: 4fef 0010 lea %sp@(16),%sp
477e0: 60c4 bras 477a6 <_Heap_Block_allocate+0xac>
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Prev_block(
const Heap_Block *block
)
{
return (Heap_Block *) ((uintptr_t) block - block->prev_size);
477e2: 91d0 subal %a0@,%a0 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
477e4: 74fe moveq #-2,%d2 <== NOT EXECUTED
} else {
Heap_Block *const prev_block = _Heap_Prev_block( block );
uintptr_t const prev_block_size = _Heap_Block_size( prev_block );
block = prev_block;
block_size += prev_block_size;
477e6: 2209 movel %a1,%d1 <== NOT EXECUTED
477e8: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
477ec: d082 addl %d2,%d0 <== NOT EXECUTED
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477ee: 7401 moveq #1,%d2 <== NOT EXECUTED
477f0: 8480 orl %d0,%d2 <== NOT EXECUTED
new_block->prev_size = block_size;
477f2: 2680 movel %d0,%a3@ <== NOT EXECUTED
block = prev_block;
block_size += prev_block_size;
}
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
477f4: 2142 0004 movel %d2,%a0@(4) <== NOT EXECUTED
new_block->prev_size = block_size;
new_block->size_and_flag = new_block_size;
477f8: 274c 0004 movel %a4,%a3@(4) <== NOT EXECUTED
_Heap_Block_split( heap, new_block, free_list_anchor, alloc_size );
477fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477fe: 2f01 movel %d1,%sp@- <== NOT EXECUTED
47800: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47802: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47804: 4eba fc4a jsr %pc@(47450 <_Heap_Block_split>) <== NOT EXECUTED
47808: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4780c: 6098 bras 477a6 <_Heap_Block_allocate+0xac> <== NOT EXECUTED
...
00047450 <_Heap_Block_split>:
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
47450: 4e56 ffe4 linkw %fp,#-28
47454: 226e 0008 moveal %fp@(8),%a1
47458: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
4745c: 246e 000c moveal %fp@(12),%a2
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
47460: 76fe moveq #-2,%d3
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47462: 282a 0004 movel %a2@(4),%d4
)
{
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
47466: 2669 0014 moveal %a1@(20),%a3
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
4746a: 220b movel %a3,%d1
4746c: 5181 subql #8,%d1
Heap_Control *heap,
Heap_Block *block,
Heap_Block *free_list_anchor,
uintptr_t alloc_size
)
{
4746e: 286e 0010 moveal %fp@(16),%a4
Heap_Statistics *const stats = &heap->stats;
uintptr_t const page_size = heap->page_size;
47472: 2429 0010 movel %a1@(16),%d2
return heap->stats.size;
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b )
{
return a > b ? a : b;
47476: 202e 0014 movel %fp@(20),%d0
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4747a: c684 andl %d4,%d3
return heap->stats.size;
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Max( uintptr_t a, uintptr_t b )
{
return a > b ? a : b;
4747c: b280 cmpl %d0,%d1
4747e: 6302 blss 47482 <_Heap_Block_split+0x32>
47480: 2001 movel %d1,%d0
uintptr_t const min_block_size = heap->min_block_size;
uintptr_t const min_alloc_size = min_block_size - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const block_size = _Heap_Block_size( block );
uintptr_t const used_size =
47482: 5080 addql #8,%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
47484: 2a00 movel %d0,%d5
47486: 4c42 5001 remul %d2,%d1,%d5
if ( remainder != 0 ) {
4748a: 4a81 tstl %d1
4748c: 6766 beqs 474f4 <_Heap_Block_split+0xa4>
return value - remainder + alignment;
4748e: d480 addl %d0,%d2
47490: 9481 subl %d1,%d2
_Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE;
uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size );
uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size;
47492: 2203 movel %d3,%d1
47494: 5881 addql #4,%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
47496: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
4749a: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
4749c: 588b addql #4,%a3
Heap_Block *next_block = _Heap_Block_at( block, block_size );
_HAssert( used_size <= block_size + HEAP_ALLOC_BONUS );
_HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS );
if ( free_size >= free_size_limit ) {
4749e: b7c1 cmpal %d1,%a3
474a0: 6264 bhis 47506 <_Heap_Block_split+0xb6> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
474a2: 7001 moveq #1,%d0
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
474a4: 47f2 2800 lea %a2@(00000000,%d2:l),%a3
Heap_Block *const free_block = _Heap_Block_at( block, used_block_size );
uintptr_t free_block_size = block_size - used_block_size;
474a8: 9682 subl %d2,%d3
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
474aa: 7201 moveq #1,%d1
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
474ac: c880 andl %d0,%d4
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
474ae: 70fe moveq #-2,%d0
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
block->size_and_flag = size | flag;
474b0: 8484 orl %d4,%d2
474b2: 2542 0004 movel %d2,%a2@(4)
_HAssert( used_block_size + free_block_size == block_size );
_Heap_Block_set_size( block, used_block_size );
/* Statistics */
stats->free_size += free_block_size;
474b6: d7a9 0030 addl %d3,%a1@(48)
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
474ba: c0a8 0004 andl %a0@(4),%d0
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
474be: c2b0 0804 andl %a0@(00000004,%d0:l),%d1
if ( _Heap_Is_used( next_block ) ) {
474c2: 6750 beqs 47514 <_Heap_Block_split+0xc4> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
474c4: 246c 0008 moveal %a4@(8),%a2
free_block_size += next_block_size;
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
474c8: 7001 moveq #1,%d0
new_block->next = next;
new_block->prev = block_before;
474ca: 274c 000c movel %a4,%a3@(12)
474ce: 8083 orl %d3,%d0
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
474d0: 274a 0008 movel %a2,%a3@(8)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
474d4: 254b 000c movel %a3,%a2@(12)
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
474d8: 294b 0008 movel %a3,%a4@(8)
if ( _Heap_Is_used( next_block ) ) {
_Heap_Free_list_insert_after( free_list_anchor, free_block );
/* Statistics */
++stats->free_blocks;
474dc: 52a9 0038 addql #1,%a1@(56)
free_block_size += next_block_size;
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
474e0: 2740 0004 movel %d0,%a3@(4)
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
474e4: 70fe moveq #-2,%d0
474e6: c1a8 0004 andl %d0,%a0@(4)
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
next_block->prev_size = free_block_size;
474ea: 2083 movel %d3,%a0@
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
}
}
474ec: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4
474f0: 4e5e unlk %fp
474f2: 4e75 rts
uintptr_t const used_size =
_Heap_Max( alloc_size, min_alloc_size ) + HEAP_BLOCK_HEADER_SIZE;
uintptr_t const used_block_size = _Heap_Align_up( used_size, page_size );
uintptr_t const free_size = block_size + HEAP_ALLOC_BONUS - used_size;
474f4: 2203 movel %d3,%d1
474f6: 5881 addql #4,%d1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
474f8: 41f2 3800 lea %a2@(00000000,%d3:l),%a0
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
474fc: 2400 movel %d0,%d2
474fe: 9280 subl %d0,%d1
uintptr_t const free_size_limit = min_block_size + HEAP_ALLOC_BONUS;
47500: 588b addql #4,%a3
Heap_Block *next_block = _Heap_Block_at( block, block_size );
_HAssert( used_size <= block_size + HEAP_ALLOC_BONUS );
_HAssert( used_size + free_size == block_size + HEAP_ALLOC_BONUS );
if ( free_size >= free_size_limit ) {
47502: b7c1 cmpal %d1,%a3
47504: 639c blss 474a2 <_Heap_Block_split+0x52>
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
47506: 7001 moveq #1,%d0
}
}
47508: 4cd7 1c3c moveml %sp@,%d2-%d5/%a2-%a4
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
_Heap_Protection_block_initialize( heap, free_block );
} else {
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
4750c: 81a8 0004 orl %d0,%a0@(4)
}
}
47510: 4e5e unlk %fp
47512: 4e75 rts
} else {
uintptr_t const next_block_size = _Heap_Block_size( next_block );
_Heap_Free_list_replace( next_block, free_block );
free_block_size += next_block_size;
47514: d680 addl %d0,%d3 <== NOT EXECUTED
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
47516: 7001 moveq #1,%d0 <== NOT EXECUTED
}
_Heap_Protection_block_initialize( heap, block );
return block;
}
47518: 2268 0008 moveal %a0@(8),%a1 <== NOT EXECUTED
4751c: 2468 000c moveal %a0@(12),%a2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
47520: 41f3 3800 lea %a3@(00000000,%d3:l),%a0 <== NOT EXECUTED
free_block_size += next_block_size;
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
47524: 8083 orl %d3,%d0 <== NOT EXECUTED
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
47526: 2749 0008 movel %a1,%a3@(8) <== NOT EXECUTED
new_block->prev = prev;
4752a: 274a 000c movel %a2,%a3@(12) <== NOT EXECUTED
4752e: 2740 0004 movel %d0,%a3@(4) <== NOT EXECUTED
next_block->prev_size = free_block_size;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
47532: 70fe moveq #-2,%d0 <== NOT EXECUTED
next->prev = new_block;
prev->next = new_block;
47534: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
47538: c1a8 0004 andl %d0,%a0@(4) <== NOT EXECUTED
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4753c: 234b 000c movel %a3,%a1@(12) <== NOT EXECUTED
next_block = _Heap_Block_at( free_block, free_block_size );
}
free_block->size_and_flag = free_block_size | HEAP_PREV_BLOCK_USED;
next_block->prev_size = free_block_size;
47540: 2083 movel %d3,%a0@ <== NOT EXECUTED
47542: 60a8 bras 474ec <_Heap_Block_split+0x9c> <== NOT EXECUTED
0004c044 <_Heap_Extend>:
Heap_Control *heap,
void *extend_area_begin_ptr,
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
4c044: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
4c048: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
4c04c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
4c050: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
4c054: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Heap_Block *extend_first_block = NULL;
Heap_Block *extend_last_block = NULL;
uintptr_t const page_size = heap->page_size;
uintptr_t const min_block_size = heap->min_block_size;
uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
4c058: 2602 movel %d2,%d3 <== NOT EXECUTED
4c05a: d680 addl %d0,%d3 <== NOT EXECUTED
uintptr_t extend_area_size,
uintptr_t *extended_size_ptr
)
{
Heap_Statistics *const stats = &heap->stats;
Heap_Block *const first_block = heap->first_block;
4c05c: 2a2a 0020 movel %a2@(32),%d5 <== NOT EXECUTED
Heap_Block *merge_above_block = NULL;
Heap_Block *link_below_block = NULL;
Heap_Block *link_above_block = NULL;
Heap_Block *extend_first_block = NULL;
Heap_Block *extend_last_block = NULL;
uintptr_t const page_size = heap->page_size;
4c060: 282a 0010 movel %a2@(16),%d4 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
4c064: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
uintptr_t const free_size = stats->free_size;
4c068: 2c2a 0030 movel %a2@(48),%d6 <== NOT EXECUTED
Heap_Block *start_block = first_block;
Heap_Block *merge_below_block = NULL;
Heap_Block *merge_above_block = NULL;
Heap_Block *link_below_block = NULL;
Heap_Block *link_above_block = NULL;
Heap_Block *extend_first_block = NULL;
4c06c: 42ae fffc clrl %fp@(-4) <== NOT EXECUTED
Heap_Block *extend_last_block = NULL;
4c070: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
uintptr_t const free_size = stats->free_size;
uintptr_t extend_first_block_size = 0;
uintptr_t extended_size = 0;
bool extend_area_ok = false;
if ( extend_area_end < extend_area_begin ) {
4c074: b682 cmpl %d2,%d3 <== NOT EXECUTED
4c076: 640c bccs 4c084 <_Heap_Extend+0x40> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4c078: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
) {
return false;
4c07e: 4200 clrb %d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4c080: 4e5e unlk %fp <== NOT EXECUTED
4c082: 4e75 rts <== NOT EXECUTED
if ( extend_area_end < extend_area_begin ) {
return false;
}
extend_area_ok = _Heap_Get_first_and_last_block(
4c084: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
4c088: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4c08c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4c08e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4c090: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c092: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4c094: 4eb9 0004 7890 jsr 47890 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&extend_first_block,
&extend_last_block
);
if (!extend_area_ok ) {
4c09a: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
4c09e: 4a00 tstb %d0 <== NOT EXECUTED
4c0a0: 67d6 beqs 4c078 <_Heap_Extend+0x34> <== NOT EXECUTED
4c0a2: 2045 moveal %d5,%a0 <== NOT EXECUTED
4c0a4: 9bcd subal %a5,%a5 <== NOT EXECUTED
4c0a6: 97cb subal %a3,%a3 <== NOT EXECUTED
4c0a8: 99cc subal %a4,%a4 <== NOT EXECUTED
4c0aa: 42ae fff4 clrl %fp@(-12) <== NOT EXECUTED
return false;
}
do {
uintptr_t const sub_area_begin = (start_block != first_block) ?
(uintptr_t) start_block : heap->area_begin;
4c0ae: ba88 cmpl %a0,%d5 <== NOT EXECUTED
4c0b0: 6700 014a beqw 4c1fc <_Heap_Extend+0x1b8> <== NOT EXECUTED
4c0b4: 2208 movel %a0,%d1 <== NOT EXECUTED
uintptr_t const sub_area_end = start_block->prev_size;
4c0b6: 2010 movel %a0@,%d0 <== NOT EXECUTED
Heap_Block *const end_block =
_Heap_Block_of_alloc_area( sub_area_end, page_size );
if (
4c0b8: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c0ba: 6304 blss 4c0c0 <_Heap_Extend+0x7c> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
4c0bc: b681 cmpl %d1,%d3 <== NOT EXECUTED
4c0be: 62b8 bhis 4c078 <_Heap_Extend+0x34> <== NOT EXECUTED
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4c0c0: b681 cmpl %d1,%d3 <== NOT EXECUTED
4c0c2: 6700 0132 beqw 4c1f6 <_Heap_Extend+0x1b2> <== NOT EXECUTED
merge_below_block = start_block;
} else if ( extend_area_end < sub_area_end ) {
4c0c6: b083 cmpl %d3,%d0 <== NOT EXECUTED
4c0c8: 6304 blss 4c0ce <_Heap_Extend+0x8a> <== NOT EXECUTED
4c0ca: 2d48 fff4 movel %a0,%fp@(-12) <== NOT EXECUTED
4c0ce: 2e00 movel %d0,%d7 <== NOT EXECUTED
4c0d0: 2240 moveal %d0,%a1 <== NOT EXECUTED
4c0d2: 5189 subql #8,%a1 <== NOT EXECUTED
4c0d4: 4c44 7001 remul %d4,%d1,%d7 <== NOT EXECUTED
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4c0d8: 93c1 subal %d1,%a1 <== NOT EXECUTED
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
4c0da: b480 cmpl %d0,%d2 <== NOT EXECUTED
4c0dc: 6700 0100 beqw 4c1de <_Heap_Extend+0x19a> <== NOT EXECUTED
start_block->prev_size = extend_area_end;
merge_above_block = end_block;
} else if ( sub_area_end < extend_area_begin ) {
4c0e0: b082 cmpl %d2,%d0 <== NOT EXECUTED
4c0e2: 6402 bccs 4c0e6 <_Heap_Extend+0xa2> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
4c0e4: 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;
4c0e6: 70fe moveq #-2,%d0 <== NOT EXECUTED
4c0e8: 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);
4c0ec: 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 );
4c0f0: b1c5 cmpal %d5,%a0 <== NOT EXECUTED
4c0f2: 66ba bnes 4c0ae <_Heap_Extend+0x6a> <== NOT EXECUTED
if ( extend_area_begin < heap->area_begin ) {
4c0f4: b4aa 0018 cmpl %a2@(24),%d2 <== NOT EXECUTED
4c0f8: 6500 010a bcsw 4c204 <_Heap_Extend+0x1c0> <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
4c0fc: b6aa 001c cmpl %a2@(28),%d3 <== NOT EXECUTED
4c100: 6304 blss 4c106 <_Heap_Extend+0xc2> <== NOT EXECUTED
heap->area_end = extend_area_end;
4c102: 2543 001c movel %d3,%a2@(28) <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4c106: 226e fff8 moveal %fp@(-8),%a1 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4c10a: 2009 movel %a1,%d0 <== NOT EXECUTED
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c10c: 7201 moveq #1,%d1 <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4c10e: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4c112: 9088 subl %a0,%d0 <== NOT EXECUTED
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c114: 8280 orl %d0,%d1 <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
4c116: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c118: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_first_block );
extend_last_block->prev_size = extend_first_block_size;
4c11c: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4c11e: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_last_block );
if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
4c122: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
4c126: 6400 0104 bccw 4c22c <_Heap_Extend+0x1e8> <== NOT EXECUTED
heap->first_block = extend_first_block;
4c12a: 2548 0020 movel %a0,%a2@(32) <== NOT EXECUTED
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
heap->last_block = extend_last_block;
}
if ( merge_below_block != NULL ) {
4c12e: 4a8c tstl %a4 <== NOT EXECUTED
4c130: 6700 0148 beqw 4c27a <_Heap_Extend+0x236> <== NOT EXECUTED
Heap_Control *heap,
uintptr_t extend_area_begin,
Heap_Block *first_block
)
{
uintptr_t const page_size = heap->page_size;
4c134: 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 );
4c138: 5082 addql #8,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
4c13a: 2802 movel %d2,%d4 <== NOT EXECUTED
4c13c: 4c40 4001 remul %d0,%d1,%d4 <== NOT EXECUTED
if ( remainder != 0 ) {
4c140: 4a81 tstl %d1 <== NOT EXECUTED
4c142: 6704 beqs 4c148 <_Heap_Extend+0x104> <== NOT EXECUTED
return value - remainder + alignment;
4c144: d480 addl %d0,%d2 <== NOT EXECUTED
4c146: 9481 subl %d1,%d2 <== NOT EXECUTED
uintptr_t const new_first_block_begin =
4c148: 2042 moveal %d2,%a0 <== NOT EXECUTED
4c14a: 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 =
4c14c: 200c movel %a4,%d0 <== NOT EXECUTED
4c14e: 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;
4c150: 7201 moveq #1,%d1 <== NOT EXECUTED
4c152: 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;
4c154: 2094 movel %a4@,%a0@ <== NOT EXECUTED
new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
4c156: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Free_block( heap, new_first_block );
4c15a: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c15c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c15e: 4eba fec8 jsr %pc@(4c028 <_Heap_Free_block>) <== NOT EXECUTED
4c162: 508f addql #8,%sp <== NOT EXECUTED
link_below_block,
extend_last_block
);
}
if ( merge_above_block != NULL ) {
4c164: 4a8b tstl %a3 <== NOT EXECUTED
4c166: 6700 00d4 beqw 4c23c <_Heap_Extend+0x1f8> <== NOT EXECUTED
)
{
uintptr_t const page_size = heap->page_size;
uintptr_t const last_block_begin = (uintptr_t) last_block;
uintptr_t const last_block_new_size = _Heap_Align_down(
extend_area_end - last_block_begin - HEAP_BLOCK_HEADER_SIZE,
4c16a: 5183 subql #8,%d3 <== NOT EXECUTED
uintptr_t extend_area_end
)
{
uintptr_t const page_size = heap->page_size;
uintptr_t const last_block_begin = (uintptr_t) last_block;
uintptr_t const last_block_new_size = _Heap_Align_down(
4c16c: 968b subl %a3,%d3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4c16e: 2203 movel %d3,%d1 <== NOT EXECUTED
4c170: 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;
4c176: 7201 moveq #1,%d1 <== NOT EXECUTED
4c178: 9680 subl %d0,%d3 <== NOT EXECUTED
);
Heap_Block *const new_last_block =
_Heap_Block_at( last_block, last_block_new_size );
new_last_block->size_and_flag =
(last_block->size_and_flag - last_block_new_size)
4c17a: 202b 0004 movel %a3@(4),%d0 <== NOT EXECUTED
4c17e: 9083 subl %d3,%d0 <== NOT EXECUTED
| HEAP_PREV_BLOCK_USED;
4c180: 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;
4c182: 7001 moveq #1,%d0 <== NOT EXECUTED
4c184: 2781 3804 movel %d1,%a3@(00000004,%d3:l) <== NOT EXECUTED
4c188: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4c18c: 8680 orl %d0,%d3 <== NOT EXECUTED
4c18e: 2743 0004 movel %d3,%a3@(4) <== NOT EXECUTED
_Heap_Block_set_size( last_block, last_block_new_size );
_Heap_Free_block( heap, last_block );
4c192: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4c194: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c196: 4eba fe90 jsr %pc@(4c028 <_Heap_Free_block>) <== NOT EXECUTED
4c19a: 508f addql #8,%sp <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4c19c: 4a8c tstl %a4 <== NOT EXECUTED
4c19e: 6700 00c4 beqw 4c264 <_Heap_Extend+0x220> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
}
_Heap_Set_last_block_size( heap );
extended_size = stats->free_size - free_size;
4c1a2: 202a 0030 movel %a2@(48),%d0 <== NOT EXECUTED
4c1a6: 9086 subl %d6,%d0 <== NOT EXECUTED
4c1a8: 2c00 movel %d0,%d6 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
4c1aa: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4c1ac: 206a 0024 moveal %a2@(36),%a0 <== NOT EXECUTED
* This feature will be used to terminate the scattered heap area list. See
* also _Heap_Extend().
*/
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{
_Heap_Block_set_size(
4c1b0: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
4c1b4: 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;
4c1b6: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4c1ba: 8280 orl %d0,%d1 <== NOT EXECUTED
4c1bc: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Set_last_block_size( heap );
extended_size = stats->free_size - free_size;
/* Statistics */
stats->size += extended_size;
4c1c0: ddaa 002c addl %d6,%a2@(44) <== NOT EXECUTED
if ( extended_size_ptr != NULL )
4c1c4: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
4c1c8: 6700 00ca beqw 4c294 <_Heap_Extend+0x250> <== NOT EXECUTED
*extended_size_ptr = extended_size;
4c1cc: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4c1d0: 2086 movel %d6,%a0@ <== NOT EXECUTED
return true;
}
4c1d2: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
stats->size += extended_size;
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
4c1d8: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c1da: 4e5e unlk %fp <== NOT EXECUTED
4c1dc: 4e75 rts <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c1de: 70fe moveq #-2,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_of_alloc_area(
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
4c1e0: 2649 moveal %a1,%a3 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c1e2: c0a9 0004 andl %a1@(4),%d0 <== NOT EXECUTED
} else if ( extend_area_end < sub_area_end ) {
link_below_block = start_block;
}
if ( sub_area_end == extend_area_begin ) {
start_block->prev_size = extend_area_end;
4c1e6: 2083 movel %d3,%a0@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4c1e8: 41f1 0800 lea %a1@(00000000,%d0:l),%a0 <== NOT EXECUTED
} else if ( sub_area_end < extend_area_begin ) {
link_above_block = end_block;
}
start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
} while ( start_block != first_block );
4c1ec: b1c5 cmpal %d5,%a0 <== NOT EXECUTED
4c1ee: 6600 febe bnew 4c0ae <_Heap_Extend+0x6a> <== NOT EXECUTED
4c1f2: 6000 ff00 braw 4c0f4 <_Heap_Extend+0xb0> <== NOT EXECUTED
sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
) {
return false;
}
if ( extend_area_end == sub_area_begin ) {
4c1f6: 2848 moveal %a0,%a4 <== NOT EXECUTED
4c1f8: 6000 fed4 braw 4c0ce <_Heap_Extend+0x8a> <== NOT EXECUTED
return false;
}
do {
uintptr_t const sub_area_begin = (start_block != first_block) ?
(uintptr_t) start_block : heap->area_begin;
4c1fc: 222a 0018 movel %a2@(24),%d1 <== NOT EXECUTED
4c200: 6000 feb4 braw 4c0b6 <_Heap_Extend+0x72> <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4c204: 226e fff8 moveal %fp@(-8),%a1 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4c208: 2009 movel %a1,%d0 <== NOT EXECUTED
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c20a: 7201 moveq #1,%d1 <== NOT EXECUTED
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
4c20c: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
heap->area_begin = extend_area_begin;
} else if ( heap->area_end < extend_area_end ) {
heap->area_end = extend_area_end;
}
extend_first_block_size =
4c210: 9088 subl %a0,%d0 <== NOT EXECUTED
start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
} while ( start_block != first_block );
if ( extend_area_begin < heap->area_begin ) {
heap->area_begin = extend_area_begin;
4c212: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c216: 8280 orl %d0,%d1 <== NOT EXECUTED
}
extend_first_block_size =
(uintptr_t) extend_last_block - (uintptr_t) extend_first_block;
extend_first_block->prev_size = extend_area_end;
4c218: 2083 movel %d3,%a0@ <== NOT EXECUTED
extend_first_block->size_and_flag =
extend_first_block_size | HEAP_PREV_BLOCK_USED;
4c21a: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_first_block );
extend_last_block->prev_size = extend_first_block_size;
4c21e: 2280 movel %d0,%a1@ <== NOT EXECUTED
extend_last_block->size_and_flag = 0;
4c220: 42a9 0004 clrl %a1@(4) <== NOT EXECUTED
_Heap_Protection_block_initialize( heap, extend_last_block );
if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
4c224: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
4c228: 6500 ff00 bcsw 4c12a <_Heap_Extend+0xe6> <== NOT EXECUTED
heap->first_block = extend_first_block;
} else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
4c22c: b3ea 0024 cmpal %a2@(36),%a1 <== NOT EXECUTED
4c230: 6300 fefc blsw 4c12e <_Heap_Extend+0xea> <== NOT EXECUTED
heap->last_block = extend_last_block;
4c234: 2549 0024 movel %a1,%a2@(36) <== NOT EXECUTED
4c238: 6000 fef4 braw 4c12e <_Heap_Extend+0xea> <== NOT EXECUTED
);
}
if ( merge_above_block != NULL ) {
_Heap_Merge_above( heap, merge_above_block, extend_area_end );
} else if ( link_above_block != NULL ) {
4c23c: 4a8d tstl %a5 <== NOT EXECUTED
4c23e: 6700 ff5c beqw 4c19c <_Heap_Extend+0x158> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
4c242: 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 );
4c244: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4c248: 928d subl %a5,%d1 <== NOT EXECUTED
4c24a: 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(
4c24e: 206e fff8 moveal %fp@(-8),%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
4c252: 8280 orl %d0,%d1 <== NOT EXECUTED
uintptr_t const link_begin = (uintptr_t) link;
uintptr_t const first_block_begin = (uintptr_t) first_block;
_Heap_Block_set_size( link, first_block_begin - link_begin );
last_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
4c254: 7001 moveq #1,%d0 <== NOT EXECUTED
4c256: 2b41 0004 movel %d1,%a5@(4) <== NOT EXECUTED
4c25a: 81a8 0004 orl %d0,%a0@(4) <== NOT EXECUTED
extend_first_block,
extend_last_block
);
}
if ( merge_below_block == NULL && merge_above_block == NULL ) {
4c25e: 4a8c tstl %a4 <== NOT EXECUTED
4c260: 6600 ff40 bnew 4c1a2 <_Heap_Extend+0x15e> <== NOT EXECUTED
4c264: 4a8b tstl %a3 <== NOT EXECUTED
4c266: 6600 ff3a bnew 4c1a2 <_Heap_Extend+0x15e> <== NOT EXECUTED
_Heap_Free_block( heap, extend_first_block );
4c26a: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4c26e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c270: 4eba fdb6 jsr %pc@(4c028 <_Heap_Free_block>) <== NOT EXECUTED
4c274: 508f addql #8,%sp <== NOT EXECUTED
4c276: 6000 ff2a braw 4c1a2 <_Heap_Extend+0x15e> <== NOT EXECUTED
heap->last_block = extend_last_block;
}
if ( merge_below_block != NULL ) {
_Heap_Merge_below( heap, extend_area_begin, merge_below_block );
} else if ( link_below_block != NULL ) {
4c27a: 4aae fff4 tstl %fp@(-12) <== NOT EXECUTED
4c27e: 6700 fee4 beqw 4c164 <_Heap_Extend+0x120> <== NOT EXECUTED
{
uintptr_t const last_block_begin = (uintptr_t) last_block;
uintptr_t const link_begin = (uintptr_t) link;
last_block->size_and_flag =
(link_begin - last_block_begin) | HEAP_PREV_BLOCK_USED;
4c282: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4c286: 7201 moveq #1,%d1 <== NOT EXECUTED
4c288: 9089 subl %a1,%d0 <== NOT EXECUTED
4c28a: 8280 orl %d0,%d1 <== NOT EXECUTED
4c28c: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
4c290: 6000 fed2 braw 4c164 <_Heap_Extend+0x120> <== NOT EXECUTED
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
}
4c294: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
stats->size += extended_size;
if ( extended_size_ptr != NULL )
*extended_size_ptr = extended_size;
return true;
4c29a: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4c29c: 4e5e unlk %fp <== NOT EXECUTED
0004bd1c <_Heap_Free>:
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
{
4bd1c: 4e56 ffe8 linkw %fp,#-24
4bd20: 202e 000c movel %fp@(12),%d0
4bd24: 2040 moveal %d0,%a0
4bd26: 5188 subql #8,%a0
4bd28: 226e 0008 moveal %fp@(8),%a1
4bd2c: 4c69 0001 0010 remul %a1@(16),%d1,%d0
4bd32: 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
4bd36: 2029 0020 movel %a1@(32),%d0
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
4bd3a: 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;
4bd3c: b088 cmpl %a0,%d0
4bd3e: 6200 0098 bhiw 4bdd8 <_Heap_Free+0xbc>
4bd42: 2229 0024 movel %a1@(36),%d1
4bd46: b288 cmpl %a0,%d1
4bd48: 6500 008e bcsw 4bdd8 <_Heap_Free+0xbc>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd4c: 2628 0004 movel %a0@(4),%d3
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4bd50: 74fe moveq #-2,%d2
4bd52: c483 andl %d3,%d2
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4bd54: 45f0 2800 lea %a0@(00000000,%d2:l),%a2
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4bd58: b5c0 cmpal %d0,%a2
4bd5a: 657c bcss 4bdd8 <_Heap_Free+0xbc> <== NEVER TAKEN
4bd5c: b5c1 cmpal %d1,%a2
4bd5e: 6278 bhis 4bdd8 <_Heap_Free+0xbc> <== NEVER TAKEN
4bd60: 282a 0004 movel %a2@(4),%d4
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
_HAssert( false );
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
4bd64: 0804 0000 btst #0,%d4
4bd68: 676e beqs 4bdd8 <_Heap_Free+0xbc> <== NEVER TAKEN
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4bd6a: 7afe moveq #-2,%d5
4bd6c: c885 andl %d5,%d4
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
4bd6e: b5c1 cmpal %d1,%a2
4bd70: 6700 00f6 beqw 4be68 <_Heap_Free+0x14c>
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4bd74: 7a01 moveq #1,%d5
4bd76: cab2 4804 andl %a2@(00000004,%d4:l),%d5
return do_free;
}
#endif
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )
4bd7a: 57c5 seq %d5
4bd7c: 4485 negl %d5
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
if ( !_Heap_Is_prev_used( block ) ) {
4bd7e: 0803 0000 btst #0,%d3
4bd82: 665e bnes 4bde2 <_Heap_Free+0xc6>
uintptr_t const prev_size = block->prev_size;
4bd84: 2610 movel %a0@,%d3
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4bd86: 91c3 subal %d3,%a0
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4bd88: b1c0 cmpal %d0,%a0
4bd8a: 654c bcss 4bdd8 <_Heap_Free+0xbc> <== NEVER TAKEN
4bd8c: b1c1 cmpal %d1,%a0
4bd8e: 6248 bhis 4bdd8 <_Heap_Free+0xbc> <== NEVER TAKEN
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4bd90: 7001 moveq #1,%d0
4bd92: c0a8 0004 andl %a0@(4),%d0
return( false );
}
/* As we always coalesce free blocks, the block that preceedes prev_block
must have been used. */
if ( !_Heap_Is_prev_used ( prev_block) ) {
4bd96: 6740 beqs 4bdd8 <_Heap_Free+0xbc> <== NEVER TAKEN
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
4bd98: 4a05 tstb %d5
4bd9a: 6700 00d2 beqw 4be6e <_Heap_Free+0x152>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bd9e: 266a 0008 moveal %a2@(8),%a3 <== NOT EXECUTED
_HAssert( false );
return( false );
}
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
4bda2: d882 addl %d2,%d4 <== NOT EXECUTED
4bda4: d684 addl %d4,%d3 <== NOT EXECUTED
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bda6: 7001 moveq #1,%d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bda8: 246a 000c moveal %a2@(12),%a2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
4bdac: 254b 0008 movel %a3,%a2@(8) <== NOT EXECUTED
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bdb0: 8083 orl %d3,%d0 <== NOT EXECUTED
next->prev = prev;
4bdb2: 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;
4bdb6: 53a9 0038 subql #1,%a1@(56) <== NOT EXECUTED
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
4bdba: 2183 3800 movel %d3,%a0@(00000000,%d3:l) <== NOT EXECUTED
if ( next_is_free ) { /* coalesce both */
uintptr_t const size = block_size + prev_size + next_block_size;
_Heap_Free_list_remove( next_block );
stats->free_blocks -= 1;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bdbe: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4bdc2: 53a9 0040 subql #1,%a1@(64) <== NOT EXECUTED
++stats->frees;
4bdc6: 52a9 0050 addql #1,%a1@(80) <== NOT EXECUTED
stats->free_size += block_size;
4bdca: d5a9 0030 addl %d2,%a1@(48) <== NOT EXECUTED
return( true );
4bdce: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4bdd0: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3
4bdd4: 4e5e unlk %fp
4bdd6: 4e75 rts
4bdd8: 4cd7 0c3c moveml %sp@,%d2-%d5/%a2-%a3 <== NOT EXECUTED
/* As we always coalesce free blocks, the block that preceedes prev_block
must have been used. */
if ( !_Heap_Is_prev_used ( prev_block) ) {
_HAssert( false );
return( false );
4bddc: 4200 clrb %d0 <== NOT EXECUTED
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bdde: 4e5e unlk %fp <== NOT EXECUTED
4bde0: 4e75 rts <== NOT EXECUTED
uintptr_t const size = block_size + prev_size;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
4bde2: 4a05 tstb %d5
4bde4: 6736 beqs 4be1c <_Heap_Free+0x100>
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bde6: 266a 0008 moveal %a2@(8),%a3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
uintptr_t const size = block_size + next_block_size;
4bdea: d882 addl %d2,%d4
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bdec: 7001 moveq #1,%d0
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
}
4bdee: 246a 000c moveal %a2@(12),%a2
)
{
Heap_Block *next = old_block->next;
Heap_Block *prev = old_block->prev;
new_block->next = next;
4bdf2: 214b 0008 movel %a3,%a0@(8)
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
uintptr_t const size = block_size + next_block_size;
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4bdf6: 8084 orl %d4,%d0
new_block->prev = prev;
4bdf8: 214a 000c movel %a2,%a0@(12)
next_block = _Heap_Block_at( block, size );
next_block->prev_size = size;
4bdfc: 2184 4800 movel %d4,%a0@(00000000,%d4:l)
next_block->prev_size = size;
}
} else if ( next_is_free ) { /* coalesce next */
uintptr_t const size = block_size + next_block_size;
_Heap_Free_list_replace( next_block, block );
block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4be00: 2140 0004 movel %d0,%a0@(4)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4be04: 7001 moveq #1,%d0
next->prev = new_block;
prev->next = new_block;
4be06: 2548 0008 movel %a0,%a2@(8)
Heap_Block *prev = old_block->prev;
new_block->next = next;
new_block->prev = prev;
next->prev = new_block;
4be0a: 2748 000c movel %a0,%a3@(12)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4be0e: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4be12: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4be16: d5a9 0030 addl %d2,%a1@(48)
4be1a: 60b4 bras 4bdd0 <_Heap_Free+0xb4>
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4be1c: 2029 0038 movel %a1@(56),%d0
next_block->prev_size = size;
} else { /* no coalesce */
/* Add 'block' to the head of the free blocks list as it tends to
produce less fragmentation than adding to the tail. */
_Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4be20: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4be22: 7afe moveq #-2,%d5
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
4be24: 5280 addql #1,%d0
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(
Heap_Block *block_before,
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
4be26: 2669 0008 moveal %a1@(8),%a3
new_block->next = next;
new_block->prev = block_before;
4be2a: 2149 000c movel %a1,%a0@(12)
next_block->prev_size = size;
} else { /* no coalesce */
/* Add 'block' to the head of the free blocks list as it tends to
produce less fragmentation than adding to the tail. */
_Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;
4be2e: 8282 orl %d2,%d1
Heap_Block *new_block
)
{
Heap_Block *next = block_before->next;
new_block->next = next;
4be30: 214b 0008 movel %a3,%a0@(8)
4be34: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4be38: cbaa 0004 andl %d5,%a2@(4)
new_block->prev = block_before;
block_before->next = new_block;
next->prev = new_block;
4be3c: 2748 000c movel %a0,%a3@(12)
next_block->prev_size = block_size;
4be40: 2482 movel %d2,%a2@
{
Heap_Block *next = block_before->next;
new_block->next = next;
new_block->prev = block_before;
block_before->next = new_block;
4be42: 2348 0008 movel %a0,%a1@(8)
/* Statistics */
++stats->free_blocks;
4be46: 2340 0038 movel %d0,%a1@(56)
if ( stats->max_free_blocks < stats->free_blocks ) {
4be4a: b0a9 003c cmpl %a1@(60),%d0
4be4e: 6300 ff72 blsw 4bdc2 <_Heap_Free+0xa6>
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4be52: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4be56: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4be5a: d5a9 0030 addl %d2,%a1@(48)
next_block->prev_size = block_size;
/* Statistics */
++stats->free_blocks;
if ( stats->max_free_blocks < stats->free_blocks ) {
stats->max_free_blocks = stats->free_blocks;
4be5e: 2340 003c movel %d0,%a1@(60)
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4be62: 7001 moveq #1,%d0
4be64: 6000 ff6a braw 4bdd0 <_Heap_Free+0xb4>
return true;
}
next_block_size = _Heap_Block_size( next_block );
next_is_free = next_block != heap->last_block
&& !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
4be68: 4205 clrb %d5 <== NOT EXECUTED
4be6a: 6000 ff12 braw 4bd7e <_Heap_Free+0x62> <== NOT EXECUTED
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
} else { /* coalesce prev */
uintptr_t const size = block_size + prev_size;
4be6e: d682 addl %d2,%d3
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4be70: 7201 moveq #1,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4be72: 7afe moveq #-2,%d5
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
} else { /* coalesce prev */
uintptr_t const size = block_size + prev_size;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4be74: 8283 orl %d3,%d1
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
next_block->prev_size = size;
4be76: 2483 movel %d3,%a2@
/* Statistics */
--stats->used_blocks;
++stats->frees;
stats->free_size += block_size;
return( true );
4be78: 7001 moveq #1,%d0
next_block = _Heap_Block_at( prev_block, size );
_HAssert(!_Heap_Is_prev_used( next_block));
next_block->prev_size = size;
} else { /* coalesce prev */
uintptr_t const size = block_size + prev_size;
prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;
4be7a: 2141 0004 movel %d1,%a0@(4)
next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;
4be7e: cbaa 0004 andl %d5,%a2@(4)
stats->max_free_blocks = stats->free_blocks;
}
}
/* Statistics */
--stats->used_blocks;
4be82: 53a9 0040 subql #1,%a1@(64)
++stats->frees;
4be86: 52a9 0050 addql #1,%a1@(80)
stats->free_size += block_size;
4be8a: d5a9 0030 addl %d2,%a1@(48)
4be8e: 6000 ff40 braw 4bdd0 <_Heap_Free+0xb4>
...
0004c028 <_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 )
{
4c028: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c02c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Heap_Statistics *const stats = &heap->stats;
/* Statistics */
++stats->used_blocks;
4c030: 52a8 0040 addql #1,%a0@(64) <== NOT EXECUTED
--stats->frees;
4c034: 53a8 0050 subql #1,%a0@(80) <== NOT EXECUTED
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4c038: 50ae 000c addql #8,%fp@(12) <== NOT EXECUTED
}
4c03c: 4e5e unlk %fp <== NOT EXECUTED
/* Statistics */
++stats->used_blocks;
--stats->frees;
_Heap_Free( heap, (void *) _Heap_Alloc_area_of_block( block ));
4c03e: 4ef9 0004 c2a0 jmp 4c2a0 <_Heap_Free> <== NOT EXECUTED
00047544 <_Heap_Get_first_and_last_block>:
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
47544: 4e56 fff0 linkw %fp,#-16
47548: 222e 0008 movel %fp@(8),%d1
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
uintptr_t const alloc_area_begin =
_Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
4754c: 2001 movel %d1,%d0
4754e: 5080 addql #8,%d0
uintptr_t page_size,
uintptr_t min_block_size,
Heap_Block **first_block_ptr,
Heap_Block **last_block_ptr
)
{
47550: 48d7 003c moveml %d2-%d5,%sp@
47554: 242e 0010 movel %fp@(16),%d2
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
47558: 2a00 movel %d0,%d5
4755a: 262e 000c movel %fp@(12),%d3
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
4755e: 2043 moveal %d3,%a0
47560: d1c1 addal %d1,%a0
47562: 4c42 5004 remul %d2,%d4,%d5
if ( remainder != 0 ) {
47566: 4a84 tstl %d4
47568: 6704 beqs 4756e <_Heap_Get_first_and_last_block+0x2a><== ALWAYS TAKEN
return value - remainder + alignment;
4756a: d082 addl %d2,%d0 <== NOT EXECUTED
4756c: 9084 subl %d4,%d0 <== NOT EXECUTED
_Heap_Align_down( heap_area_size - overhead, page_size );
Heap_Block *const first_block = (Heap_Block *) first_block_begin;
Heap_Block *const last_block =
_Heap_Block_at( first_block, first_block_size );
if (
4756e: b1c1 cmpal %d1,%a0
47570: 6532 bcss 475a4 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
uintptr_t const alloc_area_begin =
_Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
uintptr_t const first_block_begin =
alloc_area_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const overhead =
HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin);
47572: 2040 moveal %d0,%a0
47574: 5188 subql #8,%a0
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
uintptr_t const alloc_area_begin =
_Heap_Align_up( heap_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
uintptr_t const first_block_begin =
alloc_area_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const overhead =
47576: 9081 subl %d1,%d0
Heap_Block *const last_block =
_Heap_Block_at( first_block, first_block_size );
if (
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
47578: b083 cmpl %d3,%d0
4757a: 6428 bccs 475a4 <_Heap_Get_first_and_last_block+0x60>
uintptr_t const first_block_begin =
alloc_area_begin - HEAP_BLOCK_HEADER_SIZE;
uintptr_t const overhead =
HEAP_BLOCK_HEADER_SIZE + (first_block_begin - heap_area_begin);
uintptr_t const first_block_size =
_Heap_Align_down( heap_area_size - overhead, page_size );
4757c: 9680 subl %d0,%d3
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
4757e: 2203 movel %d3,%d1
47580: 4c42 1000 remul %d2,%d0,%d1
47584: 9680 subl %d0,%d3
_Heap_Block_at( first_block, first_block_size );
if (
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
|| first_block_size < min_block_size
47586: b6ae 0014 cmpl %fp@(20),%d3
4758a: 6518 bcss 475a4 <_Heap_Get_first_and_last_block+0x60><== NEVER TAKEN
) {
/* Invalid area or area too small */
return false;
}
*first_block_ptr = first_block;
4758c: 226e 0018 moveal %fp@(24),%a1
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
47590: d688 addl %a0,%d3
47592: 2288 movel %a0,%a1@
47594: 226e 001c moveal %fp@(28),%a1
47598: 2283 movel %d3,%a1@
*last_block_ptr = last_block;
return true;
}
4759a: 4cd7 003c moveml %sp@,%d2-%d5
}
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
4759e: 7001 moveq #1,%d0
}
475a0: 4e5e unlk %fp
475a2: 4e75 rts
475a4: 4cd7 003c moveml %sp@,%d2-%d5
heap_area_end < heap_area_begin
|| heap_area_size <= overhead
|| first_block_size < min_block_size
) {
/* Invalid area or area too small */
return false;
475a8: 4200 clrb %d0
*first_block_ptr = first_block;
*last_block_ptr = last_block;
return true;
}
475aa: 4e5e unlk %fp <== NOT EXECUTED
00050e6c <_Heap_Get_free_information>:
void _Heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
50e6c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
50e70: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
50e74: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
50e78: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
50e7c: 206b 0008 moveal %a3@(8),%a0 <== NOT EXECUTED
)
{
Heap_Block *the_block;
Heap_Block *const tail = _Heap_Free_list_tail(the_heap);
info->number = 0;
50e80: 4292 clrl %a2@ <== NOT EXECUTED
info->largest = 0;
50e82: 42aa 0004 clrl %a2@(4) <== NOT EXECUTED
info->total = 0;
50e86: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
for(the_block = _Heap_Free_list_first(the_heap);
50e8a: b1cb cmpal %a3,%a0 <== NOT EXECUTED
50e8c: 6732 beqs 50ec0 <_Heap_Get_free_information+0x54><== NOT EXECUTED
50e8e: 327c 0001 moveaw #1,%a1 <== NOT EXECUTED
50e92: 4282 clrl %d2 <== NOT EXECUTED
50e94: 4281 clrl %d1 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
50e96: 70fe moveq #-2,%d0 <== NOT EXECUTED
the_block != tail;
the_block = the_block->next)
50e98: 2609 movel %a1,%d3 <== NOT EXECUTED
50e9a: 5283 addql #1,%d3 <== NOT EXECUTED
50e9c: c0a8 0004 andl %a0@(4),%d0 <== NOT EXECUTED
/* As we always coalesce free blocks, prev block must have been used. */
_HAssert(_Heap_Is_prev_used(the_block));
info->number++;
info->total += the_size;
50ea0: d280 addl %d0,%d1 <== NOT EXECUTED
if ( info->largest < the_size )
50ea2: b480 cmpl %d0,%d2 <== NOT EXECUTED
50ea4: 6404 bccs 50eaa <_Heap_Get_free_information+0x3e><== NOT EXECUTED
info->largest = the_size;
50ea6: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
the_block != tail;
the_block = the_block->next)
50eaa: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
info->number = 0;
info->largest = 0;
info->total = 0;
for(the_block = _Heap_Free_list_first(the_heap);
50eae: b1cb cmpal %a3,%a0 <== NOT EXECUTED
50eb0: 6708 beqs 50eba <_Heap_Get_free_information+0x4e><== NOT EXECUTED
50eb2: 242a 0004 movel %a2@(4),%d2 <== NOT EXECUTED
50eb6: 2243 moveal %d3,%a1 <== NOT EXECUTED
50eb8: 60dc bras 50e96 <_Heap_Get_free_information+0x2a><== NOT EXECUTED
50eba: 2489 movel %a1,%a2@ <== NOT EXECUTED
50ebc: 2541 0008 movel %d1,%a2@(8) <== NOT EXECUTED
info->number++;
info->total += the_size;
if ( info->largest < the_size )
info->largest = the_size;
}
}
50ec0: 4cd7 0c0c moveml %sp@,%d2-%d3/%a2-%a3 <== NOT EXECUTED
50ec4: 4e5e unlk %fp <== NOT EXECUTED
0004c98c <_Heap_Get_information>:
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
4c98c: 4e56 fff0 linkw %fp,#-16
4c990: 226e 0008 moveal %fp@(8),%a1
4c994: 48d7 041c moveml %d2-%d4/%a2,%sp@
4c998: 282e 000c movel %fp@(12),%d4
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
4c99c: 2044 moveal %d4,%a0
void _Heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
Heap_Block *the_block = the_heap->first_block;
4c99e: 2469 0020 moveal %a1@(32),%a2
Heap_Block *const end = the_heap->last_block;
4c9a2: 2429 0024 movel %a1@(36),%d2
memset(the_info, 0, sizeof(*the_info));
4c9a6: 4298 clrl %a0@+
4c9a8: 4298 clrl %a0@+
4c9aa: 4298 clrl %a0@+
4c9ac: 4298 clrl %a0@+
4c9ae: 4298 clrl %a0@+
4c9b0: 4290 clrl %a0@
while ( the_block != end ) {
4c9b2: b48a cmpl %a2,%d2
4c9b4: 6738 beqs 4c9ee <_Heap_Get_information+0x62> <== NEVER TAKEN
uintptr_t const the_size = _Heap_Block_size(the_block);
Heap_Block *const next_block = _Heap_Block_at(the_block, the_size);
Heap_Information *info;
if ( _Heap_Is_prev_used(next_block) )
info = &the_info->Used;
4c9b6: 2604 movel %d4,%d3
4c9b8: 0683 0000 000c addil #12,%d3
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
while ( the_block != end ) {
4c9be: 222a 0004 movel %a2@(4),%d1
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4c9c2: 70fe moveq #-2,%d0
uintptr_t const the_size = _Heap_Block_size(the_block);
Heap_Block *const next_block = _Heap_Block_at(the_block, the_size);
Heap_Information *info;
if ( _Heap_Is_prev_used(next_block) )
info = &the_info->Used;
4c9c4: 2043 moveal %d3,%a0
4c9c6: c081 andl %d1,%d0
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4c9c8: 43f2 0800 lea %a2@(00000000,%d0:l),%a1
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4c9cc: 2229 0004 movel %a1@(4),%d1
while ( the_block != end ) {
uintptr_t const the_size = _Heap_Block_size(the_block);
Heap_Block *const next_block = _Heap_Block_at(the_block, the_size);
Heap_Information *info;
if ( _Heap_Is_prev_used(next_block) )
4c9d0: 0801 0000 btst #0,%d1
4c9d4: 6602 bnes 4c9d8 <_Heap_Get_information+0x4c>
info = &the_info->Used;
else
info = &the_info->Free;
4c9d6: 2044 moveal %d4,%a0
info->number++;
4c9d8: 5290 addql #1,%a0@
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
while ( the_block != end ) {
4c9da: 2449 moveal %a1,%a2
info = &the_info->Used;
else
info = &the_info->Free;
info->number++;
info->total += the_size;
4c9dc: d1a8 0008 addl %d0,%a0@(8)
if ( info->largest < the_size )
4c9e0: b0a8 0004 cmpl %a0@(4),%d0
4c9e4: 6304 blss 4c9ea <_Heap_Get_information+0x5e>
info->largest = the_size;
4c9e6: 2140 0004 movel %d0,%a0@(4)
Heap_Block *the_block = the_heap->first_block;
Heap_Block *const end = the_heap->last_block;
memset(the_info, 0, sizeof(*the_info));
while ( the_block != end ) {
4c9ea: b3c2 cmpal %d2,%a1
4c9ec: 66d4 bnes 4c9c2 <_Heap_Get_information+0x36>
if ( info->largest < the_size )
info->largest = the_size;
the_block = next_block;
}
}
4c9ee: 4cd7 041c moveml %sp@,%d2-%d4/%a2
4c9f2: 4e5e unlk %fp
...
000475ae <_Heap_Initialize>:
Heap_Control *heap,
void *heap_area_begin_ptr,
uintptr_t heap_area_size,
uintptr_t page_size
)
{
475ae: 4e56 ffe0 linkw %fp,#-32
475b2: 48d7 047c moveml %d2-%d6/%a2,%sp@
475b6: 246e 0008 moveal %fp@(8),%a2
475ba: 282e 000c movel %fp@(12),%d4
475be: 2a2e 0010 movel %fp@(16),%d5
475c2: 242e 0014 movel %fp@(20),%d2
uintptr_t first_block_begin = 0;
uintptr_t first_block_size = 0;
uintptr_t last_block_begin = 0;
uintptr_t min_block_size = 0;
bool area_ok = false;
Heap_Block *first_block = NULL;
475c6: 42ae fffc clrl %fp@(-4)
Heap_Block *last_block = NULL;
475ca: 42ae fff8 clrl %fp@(-8)
if ( page_size == 0 ) {
475ce: 4a82 tstl %d2
475d0: 6750 beqs 47622 <_Heap_Initialize+0x74> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
475d2: 7003 moveq #3,%d0
475d4: c082 andl %d2,%d0
if ( remainder != 0 ) {
475d6: 6704 beqs 475dc <_Heap_Initialize+0x2e> <== ALWAYS TAKEN
return value - remainder + alignment;
475d8: 5882 addql #4,%d2 <== NOT EXECUTED
475da: 9480 subl %d0,%d2 <== NOT EXECUTED
page_size = CPU_ALIGNMENT;
} else {
page_size = _Heap_Align_up( page_size, CPU_ALIGNMENT );
if ( page_size < CPU_ALIGNMENT ) {
475dc: 7003 moveq #3,%d0
475de: b082 cmpl %d2,%d0
475e0: 6434 bccs 47616 <_Heap_Initialize+0x68> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(
uintptr_t value,
uintptr_t alignment
)
{
uintptr_t remainder = value % alignment;
475e2: 7210 moveq #16,%d1
475e4: 4c42 1000 remul %d2,%d0,%d1
if ( remainder != 0 ) {
475e8: 4a80 tstl %d0
475ea: 6700 00e8 beqw 476d4 <_Heap_Initialize+0x126>
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
475ee: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
return value - remainder + alignment;
475f2: 2602 movel %d2,%d3 <== NOT EXECUTED
475f4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
475f8: 0683 0000 0010 addil #16,%d3 <== NOT EXECUTED
475fe: 9680 subl %d0,%d3 <== NOT EXECUTED
47600: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47602: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47604: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47606: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47608: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
4760e: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
47612: 4a00 tstb %d0 <== NOT EXECUTED
47614: 662e bnes 47644 <_Heap_Initialize+0x96> <== NOT EXECUTED
return 0;
47616: 4280 clrl %d0
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
47618: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2
4761e: 4e5e unlk %fp
47620: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
47622: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
} else {
return value;
47626: 7610 moveq #16,%d3 <== NOT EXECUTED
47628: 486e fffc pea %fp@(-4) <== NOT EXECUTED
bool area_ok = false;
Heap_Block *first_block = NULL;
Heap_Block *last_block = NULL;
if ( page_size == 0 ) {
page_size = CPU_ALIGNMENT;
4762c: 7404 moveq #4,%d2 <== NOT EXECUTED
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
4762e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47630: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47632: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47634: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47636: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block> <== NOT EXECUTED
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
4763c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
47640: 4a00 tstb %d0 <== NOT EXECUTED
47642: 67d2 beqs 47616 <_Heap_Initialize+0x68> <== NOT EXECUTED
return 0;
}
memset(heap, 0, sizeof(*heap));
47644: 4878 0058 pea 58 <DBL_MANT_DIG+0x23>
uintptr_t page_size
)
{
Heap_Statistics *const stats = &heap->stats;
uintptr_t const heap_area_begin = (uintptr_t) heap_area_begin_ptr;
uintptr_t const heap_area_end = heap_area_begin + heap_area_size;
47648: da84 addl %d4,%d5
);
if ( !area_ok ) {
return 0;
}
memset(heap, 0, sizeof(*heap));
4764a: 42a7 clrl %sp@-
4764c: 2f0a movel %a2,%sp@-
4764e: 4eb9 0004 e200 jsr 4e200 <memset>
stats->size = first_block_size;
stats->free_size = first_block_size;
stats->min_free_size = first_block_size;
stats->free_blocks = 1;
stats->max_free_blocks = 1;
stats->instance = instance++;
47654: 2239 0005 dcf0 movel 5dcf0 <instance>,%d1
4765a: 2c01 movel %d1,%d6
4765c: 5286 addql #1,%d6
);
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
4765e: 4fef 000c lea %sp@(12),%sp
heap->Protection.block_check = _Heap_Protection_block_check_default;
heap->Protection.block_error = _Heap_Protection_block_error_default;
#endif
first_block_begin = (uintptr_t) first_block;
last_block_begin = (uintptr_t) last_block;
47662: 226e fff8 moveal %fp@(-8),%a1
first_block_size = last_block_begin - first_block_begin;
47666: 2009 movel %a1,%d0
heap->Protection.block_initialize = _Heap_Protection_block_initialize_default;
heap->Protection.block_check = _Heap_Protection_block_check_default;
heap->Protection.block_error = _Heap_Protection_block_error_default;
#endif
first_block_begin = (uintptr_t) first_block;
47668: 206e fffc moveal %fp@(-4),%a0
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
4766c: 9088 subl %a0,%d0
stats->size = first_block_size;
stats->free_size = first_block_size;
stats->min_free_size = first_block_size;
stats->free_blocks = 1;
stats->max_free_blocks = 1;
stats->instance = instance++;
4766e: 23c6 0005 dcf0 movel %d6,5dcf0 <instance>
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
/* First block */
first_block->prev_size = heap_area_end;
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
47674: 7c01 moveq #1,%d6
47676: 8c80 orl %d0,%d6
first_block_begin = (uintptr_t) first_block;
last_block_begin = (uintptr_t) last_block;
first_block_size = last_block_begin - first_block_begin;
/* First block */
first_block->prev_size = heap_area_end;
47678: 2085 movel %d5,%a0@
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
4767a: 2146 0004 movel %d6,%a0@(4)
/* Statistics */
stats->size = first_block_size;
stats->free_size = first_block_size;
stats->min_free_size = first_block_size;
stats->free_blocks = 1;
4767e: 7c01 moveq #1,%d6
first_block_size = last_block_begin - first_block_begin;
/* First block */
first_block->prev_size = heap_area_end;
first_block->size_and_flag = first_block_size | HEAP_PREV_BLOCK_USED;
first_block->next = _Heap_Free_list_tail( heap );
47680: 214a 0008 movel %a2,%a0@(8)
first_block->prev = _Heap_Free_list_head( heap );
47684: 214a 000c movel %a2,%a0@(12)
_Heap_Protection_block_initialize( heap, first_block );
/* Heap control */
heap->page_size = page_size;
47688: 2542 0010 movel %d2,%a2@(16)
* This feature will be used to terminate the scattered heap area list. See
* also _Heap_Extend().
*/
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{
_Heap_Block_set_size(
4768c: 2408 movel %a0,%d2
4768e: 9489 subl %a1,%d2
heap->min_block_size = min_block_size;
47690: 2543 0014 movel %d3,%a2@(20)
heap->area_begin = heap_area_begin;
47694: 2544 0018 movel %d4,%a2@(24)
heap->area_end = heap_area_end;
47698: 2545 001c movel %d5,%a2@(28)
heap->first_block = first_block;
4769c: 2548 0020 movel %a0,%a2@(32)
heap->last_block = last_block;
476a0: 2549 0024 movel %a1,%a2@(36)
476a4: 2342 0004 movel %d2,%a1@(4)
_Heap_Free_list_head( heap )->next = first_block;
_Heap_Free_list_tail( heap )->prev = first_block;
/* Last block */
last_block->prev_size = first_block_size;
476a8: 2280 movel %d0,%a1@
heap->min_block_size = min_block_size;
heap->area_begin = heap_area_begin;
heap->area_end = heap_area_end;
heap->first_block = first_block;
heap->last_block = last_block;
_Heap_Free_list_head( heap )->next = first_block;
476aa: 2548 0008 movel %a0,%a2@(8)
_Heap_Free_list_tail( heap )->prev = first_block;
476ae: 2548 000c movel %a0,%a2@(12)
last_block->size_and_flag = 0;
_Heap_Set_last_block_size( heap );
_Heap_Protection_block_initialize( heap, last_block );
/* Statistics */
stats->size = first_block_size;
476b2: 2540 002c movel %d0,%a2@(44)
stats->free_size = first_block_size;
476b6: 2540 0030 movel %d0,%a2@(48)
stats->min_free_size = first_block_size;
476ba: 2540 0034 movel %d0,%a2@(52)
stats->free_blocks = 1;
476be: 2546 0038 movel %d6,%a2@(56)
stats->max_free_blocks = 1;
476c2: 2546 003c movel %d6,%a2@(60)
stats->instance = instance++;
476c6: 2541 0028 movel %d1,%a2@(40)
_HAssert(
_Heap_Is_aligned( _Heap_Alloc_area_of_block( last_block ), page_size )
);
return first_block_size;
}
476ca: 4cee 047c ffe0 moveml %fp@(-32),%d2-%d6/%a2
476d0: 4e5e unlk %fp
476d2: 4e75 rts
return 0;
}
}
min_block_size = _Heap_Align_up( sizeof( Heap_Block ), page_size );
area_ok = _Heap_Get_first_and_last_block(
476d4: 486e fff8 pea %fp@(-8)
uintptr_t remainder = value % alignment;
if ( remainder != 0 ) {
return value - remainder + alignment;
} else {
return value;
476d8: 7610 moveq #16,%d3
476da: 486e fffc pea %fp@(-4)
476de: 2f03 movel %d3,%sp@-
476e0: 2f02 movel %d2,%sp@-
476e2: 2f05 movel %d5,%sp@-
476e4: 2f04 movel %d4,%sp@-
476e6: 4eb9 0004 7544 jsr 47544 <_Heap_Get_first_and_last_block>
page_size,
min_block_size,
&first_block,
&last_block
);
if ( !area_ok ) {
476ec: 4fef 0018 lea %sp@(24),%sp
476f0: 4a00 tstb %d0
476f2: 6700 ff22 beqw 47616 <_Heap_Initialize+0x68>
476f6: 6000 ff4c braw 47644 <_Heap_Initialize+0x96>
0005b1a0 <_Heap_Resize_block>:
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5b1a0: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5b1a4: 226e 0014 moveal %fp@(20),%a1 <== NOT EXECUTED
5b1a8: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@ <== NOT EXECUTED
5b1ac: 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);
5b1b0: 2202 movel %d2,%d1 <== NOT EXECUTED
5b1b2: 2042 moveal %d2,%a0 <== NOT EXECUTED
5b1b4: 5188 subql #8,%a0 <== NOT EXECUTED
5b1b6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5b1ba: 4c6a 1000 0010 remul %a2@(16),%d0,%d1 <== NOT EXECUTED
5b1c0: 266e 0018 moveal %fp@(24),%a3 <== NOT EXECUTED
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
5b1c4: 91c0 subal %d0,%a0 <== NOT EXECUTED
uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;
Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
*old_size = 0;
5b1c6: 4291 clrl %a1@ <== NOT EXECUTED
void *alloc_begin_ptr,
uintptr_t new_alloc_size,
uintptr_t *old_size,
uintptr_t *new_size
)
{
5b1c8: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;
Heap_Block *const block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
*old_size = 0;
*new_size = 0;
5b1cc: 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;
5b1ce: b1ea 0020 cmpal %a2@(32),%a0 <== NOT EXECUTED
5b1d2: 6500 0098 bcsw 5b26c <_Heap_Resize_block+0xcc> <== NOT EXECUTED
5b1d6: b1ea 0024 cmpal %a2@(36),%a0 <== NOT EXECUTED
5b1da: 6200 0090 bhiw 5b26c <_Heap_Resize_block+0xcc> <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
5b1de: 76fe moveq #-2,%d3 <== NOT EXECUTED
5b1e0: 78fe moveq #-2,%d4 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
5b1e2: 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;
5b1e4: 7204 moveq #4,%d1 <== NOT EXECUTED
5b1e6: 9282 subl %d2,%d1 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
5b1e8: c6a8 0004 andl %a0@(4),%d3 <== NOT EXECUTED
{
Heap_Statistics *const stats = &heap->stats;
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t block_size = _Heap_Block_size( block );
uintptr_t block_end = block_begin + block_size;
5b1ec: 49f0 3800 lea %a0@(00000000,%d3:l),%a4 <== NOT EXECUTED
uintptr_t alloc_size = block_end - alloc_begin + HEAP_ALLOC_BONUS;
5b1f0: d28c addl %a4,%d1 <== NOT EXECUTED
5b1f2: c8ac 0004 andl %a4@(4),%d4 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
5b1f6: cab4 4804 andl %a4@(00000004,%d4:l),%d5 <== NOT EXECUTED
bool next_block_is_free = _Heap_Is_free( next_block );;
_HAssert( _Heap_Is_block_in_heap( heap, next_block ) );
_HAssert( _Heap_Is_prev_used( next_block ) );
*old_size = alloc_size;
5b1fa: 2281 movel %d1,%a1@ <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_free(
const Heap_Block *block
)
{
return !_Heap_Is_used( block );
5b1fc: 4a85 tstl %d5 <== NOT EXECUTED
5b1fe: 57c5 seq %d5 <== NOT EXECUTED
5b200: 4485 negl %d5 <== NOT EXECUTED
if ( next_block_is_free ) {
5b202: 4a05 tstb %d5 <== NOT EXECUTED
5b204: 6672 bnes 5b278 <_Heap_Resize_block+0xd8> <== NOT EXECUTED
block_size += next_block_size;
alloc_size += next_block_size;
}
if ( new_alloc_size > alloc_size ) {
5b206: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b208: 6576 bcss 5b280 <_Heap_Resize_block+0xe0> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
}
if ( next_block_is_free ) {
5b20a: 4a05 tstb %d5 <== NOT EXECUTED
5b20c: 672a beqs 5b238 <_Heap_Resize_block+0x98> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(
Heap_Block *block,
uintptr_t size
)
{
uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;
5b20e: 7201 moveq #1,%d1 <== NOT EXECUTED
5b210: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5b214: 226c 0008 moveal %a4@(8),%a1 <== NOT EXECUTED
block->size_and_flag = size | flag;
5b218: 8283 orl %d3,%d1 <== NOT EXECUTED
5b21a: 286c 000c moveal %a4@(12),%a4 <== NOT EXECUTED
5b21e: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
_Heap_Block_set_size( block, block_size );
_Heap_Free_list_remove( next_block );
next_block = _Heap_Block_at( block, block_size );
next_block->size_and_flag |= HEAP_PREV_BLOCK_USED;
5b222: 7201 moveq #1,%d1 <== NOT EXECUTED
5b224: 83b0 3804 orl %d1,%a0@(00000004,%d3:l) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block )
{
Heap_Block *next = block->next;
Heap_Block *prev = block->prev;
prev->next = next;
5b228: 2949 0008 movel %a1,%a4@(8) <== NOT EXECUTED
next->prev = prev;
5b22c: 234c 000c movel %a4,%a1@(12) <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
5b230: 53aa 0038 subql #1,%a2@(56) <== NOT EXECUTED
stats->free_size -= next_block_size;
5b234: 99aa 0030 subl %d4,%a2@(48) <== NOT EXECUTED
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5b238: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5b23a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5b23c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
5b23e: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5b240: 4eb9 0004 76fa jsr 476fa <_Heap_Block_allocate> <== NOT EXECUTED
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
*new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS;
/* Statistics */
++stats->resizes;
5b246: 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;
5b24a: 72fe moveq #-2,%d1 <== NOT EXECUTED
/* Statistics */
--stats->free_blocks;
stats->free_size -= next_block_size;
}
block = _Heap_Block_allocate( heap, block, alloc_begin, new_alloc_size );
5b24c: 2040 moveal %d0,%a0 <== NOT EXECUTED
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
*new_size = (uintptr_t) next_block - alloc_begin + HEAP_ALLOC_BONUS;
5b24e: 2240 moveal %d0,%a1 <== NOT EXECUTED
5b250: 93c2 subal %d2,%a1 <== NOT EXECUTED
/* Statistics */
++stats->resizes;
return HEAP_RESIZE_SUCCESSFUL;
5b252: 4280 clrl %d0 <== NOT EXECUTED
5b254: 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;
5b258: 43f1 1804 lea %a1@(00000004,%d1:l),%a1 <== NOT EXECUTED
5b25c: 2689 movel %a1,%a3@ <== NOT EXECUTED
/* Statistics */
++stats->resizes;
5b25e: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5b262: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5b268: 4e5e unlk %fp <== NOT EXECUTED
5b26a: 4e75 rts <== NOT EXECUTED
new_alloc_size,
old_size,
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
5b26c: 7002 moveq #2,%d0 <== NOT EXECUTED
}
}
5b26e: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5b274: 4e5e unlk %fp <== NOT EXECUTED
5b276: 4e75 rts <== NOT EXECUTED
_HAssert( _Heap_Is_prev_used( next_block ) );
*old_size = alloc_size;
if ( next_block_is_free ) {
block_size += next_block_size;
5b278: d684 addl %d4,%d3 <== NOT EXECUTED
alloc_size += next_block_size;
5b27a: d284 addl %d4,%d1 <== NOT EXECUTED
}
if ( new_alloc_size > alloc_size ) {
5b27c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b27e: 648a bccs 5b20a <_Heap_Resize_block+0x6a> <== NOT EXECUTED
return HEAP_RESIZE_UNSATISFIED;
5b280: 7001 moveq #1,%d0 <== NOT EXECUTED
new_size
);
} else {
return HEAP_RESIZE_FATAL_ERROR;
}
}
5b282: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
5b288: 4e5e unlk %fp <== NOT EXECUTED
0005b28c <_Heap_Size_of_alloc_area>:
bool _Heap_Size_of_alloc_area(
Heap_Control *heap,
void *alloc_begin_ptr,
uintptr_t *alloc_size
)
{
5b28c: 4e56 0000 linkw %fp,#0
5b290: 202e 000c movel %fp@(12),%d0
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(
uintptr_t value,
uintptr_t alignment
)
{
return value - (value % alignment);
5b294: 2040 moveal %d0,%a0
5b296: 5188 subql #8,%a0
5b298: 226e 0008 moveal %fp@(8),%a1
5b29c: 2f02 movel %d2,%sp@-
5b29e: 2400 movel %d0,%d2
5b2a0: 4c69 2001 0010 remul %a1@(16),%d1,%d2
uintptr_t alloc_begin,
uintptr_t page_size
)
{
return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )
- HEAP_BLOCK_HEADER_SIZE);
5b2a6: 91c1 subal %d1,%a0
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
5b2a8: 2229 0020 movel %a1@(32),%d1
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5b2ac: b288 cmpl %a0,%d1
5b2ae: 6236 bhis 5b2e6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5b2b0: 2269 0024 moveal %a1@(36),%a1
5b2b4: b3c8 cmpal %a0,%a1
5b2b6: 652e bcss 5b2e6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
5b2b8: 74fe moveq #-2,%d2
5b2ba: c4a8 0004 andl %a0@(4),%d2
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
5b2be: d1c2 addal %d2,%a0
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
5b2c0: b1c1 cmpal %d1,%a0
5b2c2: 6522 bcss 5b2e6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
5b2c4: b1c9 cmpal %a1,%a0
5b2c6: 621e bhis 5b2e6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
5b2c8: 7201 moveq #1,%d1
5b2ca: c2a8 0004 andl %a0@(4),%d1
block_size = _Heap_Block_size( block );
next_block = _Heap_Block_at( block, block_size );
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
5b2ce: 6716 beqs 5b2e6 <_Heap_Size_of_alloc_area+0x5a> <== NEVER TAKEN
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5b2d0: 7204 moveq #4,%d1
5b2d2: 9280 subl %d0,%d1
5b2d4: 2001 movel %d1,%d0
5b2d6: d088 addl %a0,%d0
5b2d8: 226e 0010 moveal %fp@(16),%a1
return true;
}
5b2dc: 241f movel %sp@+,%d2
5b2de: 4e5e unlk %fp
|| !_Heap_Is_prev_used( next_block )
) {
return false;
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
5b2e0: 2280 movel %d0,%a1@
return true;
5b2e2: 7001 moveq #1,%d0
}
5b2e4: 4e75 rts
5b2e6: 241f movel %sp@+,%d2 <== NOT EXECUTED
5b2e8: 4e5e unlk %fp <== NOT EXECUTED
if (
!_Heap_Is_block_in_heap( heap, next_block )
|| !_Heap_Is_prev_used( next_block )
) {
return false;
5b2ea: 4200 clrb %d0 <== NOT EXECUTED
}
*alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
return true;
}
...
0004822a <_Heap_Walk>:
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
4822a: 4e56 ffc4 linkw %fp,#-60 <== NOT EXECUTED
4822e: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
48232: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
Heap_Block *const first_block = heap->first_block;
Heap_Block *const last_block = heap->last_block;
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
48236: 4bfa ff94 lea %pc@(481cc <_Heap_Walk_print_nothing>),%a5<== NOT EXECUTED
bool _Heap_Walk(
Heap_Control *heap,
int source,
bool dump
)
{
4823a: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
uintptr_t const page_size = heap->page_size;
4823e: 262a 0010 movel %a2@(16),%d3 <== NOT EXECUTED
uintptr_t const min_block_size = heap->min_block_size;
48242: 2c2a 0014 movel %a2@(20),%d6 <== NOT EXECUTED
Heap_Block *const first_block = heap->first_block;
48246: 282a 0020 movel %a2@(32),%d4 <== NOT EXECUTED
Heap_Block *const last_block = heap->last_block;
4824a: 2e2a 0024 movel %a2@(36),%d7 <== NOT EXECUTED
Heap_Block *block = first_block;
Heap_Walk_printer printer = dump ?
_Heap_Walk_print : _Heap_Walk_print_nothing;
4824e: 4a2e 0013 tstb %fp@(19) <== NOT EXECUTED
48252: 6704 beqs 48258 <_Heap_Walk+0x2e> <== NOT EXECUTED
48254: 4bfa ff7e lea %pc@(481d4 <_Heap_Walk_print>),%a5 <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
48258: 7003 moveq #3,%d0 <== NOT EXECUTED
4825a: b0b9 0006 0b58 cmpl 60b58 <_System_state_Current>,%d0 <== NOT EXECUTED
48260: 670c beqs 4826e <_Heap_Walk+0x44> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48262: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
}
block = next_block;
} while ( block != first_block );
return true;
48268: 7001 moveq #1,%d0 <== NOT EXECUTED
}
4826a: 4e5e unlk %fp <== NOT EXECUTED
4826c: 4e75 rts <== NOT EXECUTED
Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
Heap_Block *const first_block = heap->first_block;
Heap_Block *const last_block = heap->last_block;
(*printer)(
4826e: 2f2a 000c movel %a2@(12),%sp@- <== NOT EXECUTED
48272: 2f2a 0008 movel %a2@(8),%sp@- <== NOT EXECUTED
48276: 2f07 movel %d7,%sp@- <== NOT EXECUTED
48278: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4827a: 2f2a 001c movel %a2@(28),%sp@- <== NOT EXECUTED
4827e: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
48282: 2f06 movel %d6,%sp@- <== NOT EXECUTED
48284: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48286: 4879 0005 d04b pea 5d04b <_Status_Object_name_errors_to_status+0x5d><== NOT EXECUTED
4828c: 42a7 clrl %sp@- <== NOT EXECUTED
4828e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48290: 4e95 jsr %a5@ <== NOT EXECUTED
heap->area_begin, heap->area_end,
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
48292: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
48296: 4a83 tstl %d3 <== NOT EXECUTED
48298: 6700 0082 beqw 4831c <_Heap_Walk+0xf2> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
4829c: 7003 moveq #3,%d0 <== NOT EXECUTED
4829e: c083 andl %d3,%d0 <== NOT EXECUTED
(*printer)( source, true, "page size is zero\n" );
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
482a0: 6600 0090 bnew 48332 <_Heap_Walk+0x108> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
482a4: 2206 movel %d6,%d1 <== NOT EXECUTED
482a6: 4c43 1000 remul %d3,%d0,%d1 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
482aa: 4a80 tstl %d0 <== NOT EXECUTED
482ac: 6600 00a4 bnew 48352 <_Heap_Walk+0x128> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
482b0: 2004 movel %d4,%d0 <== NOT EXECUTED
482b2: 5080 addql #8,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
482b4: 4c43 0001 remul %d3,%d1,%d0 <== NOT EXECUTED
);
return false;
}
if (
482b8: 4a81 tstl %d1 <== NOT EXECUTED
482ba: 6600 00ae bnew 4836a <_Heap_Walk+0x140> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482be: 2044 moveal %d4,%a0 <== NOT EXECUTED
482c0: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
482c4: 2d41 fff0 movel %d1,%fp@(-16) <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
482c8: 0801 0000 btst #0,%d1 <== NOT EXECUTED
482cc: 6700 017e beqw 4844c <_Heap_Walk+0x222> <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
482d0: 2047 moveal %d7,%a0 <== NOT EXECUTED
482d2: 72fe moveq #-2,%d1 <== NOT EXECUTED
482d4: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
482d8: d1c1 addal %d1,%a0 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
482da: 7201 moveq #1,%d1 <== NOT EXECUTED
482dc: c2a8 0004 andl %a0@(4),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_free( last_block ) ) {
482e0: 6724 beqs 48306 <_Heap_Walk+0xdc> <== NOT EXECUTED
);
return false;
}
if (
482e2: b1c4 cmpal %d4,%a0 <== NOT EXECUTED
482e4: 6700 009c beqw 48382 <_Heap_Walk+0x158> <== NOT EXECUTED
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
482e8: 4879 0005 d1a5 pea 5d1a5 <_Status_Object_name_errors_to_status+0x1b7><== NOT EXECUTED
482ee: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
482f2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
482f4: 4e95 jsr %a5@ <== NOT EXECUTED
482f6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
482fa: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
482fc: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
48302: 4e5e unlk %fp <== NOT EXECUTED
48304: 4e75 rts <== NOT EXECUTED
return false;
}
if ( _Heap_Is_free( last_block ) ) {
(*printer)(
48306: 4879 0005 d190 pea 5d190 <_Status_Object_name_errors_to_status+0x1a2><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
4830c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48310: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48312: 4e95 jsr %a5@ <== NOT EXECUTED
48314: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
48318: 4200 clrb %d0 <== NOT EXECUTED
4831a: 60e0 bras 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED
first_block, last_block,
first_free_block, last_free_block
);
if ( page_size == 0 ) {
(*printer)( source, true, "page size is zero\n" );
4831c: 4879 0005 d0dc pea 5d0dc <_Status_Object_name_errors_to_status+0xee><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48322: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48326: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48328: 4e95 jsr %a5@ <== NOT EXECUTED
4832a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
4832e: 4200 clrb %d0 <== NOT EXECUTED
48330: 60ca bras 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED
return false;
}
if ( !_Addresses_Is_aligned( (void *) page_size ) ) {
(*printer)(
48332: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48334: 4879 0005 d0ef pea 5d0ef <_Status_Object_name_errors_to_status+0x101><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4833a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4833e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48340: 4e95 jsr %a5@ <== NOT EXECUTED
48342: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48346: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48348: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
4834e: 4e5e unlk %fp <== NOT EXECUTED
48350: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {
(*printer)(
48352: 2f06 movel %d6,%sp@- <== NOT EXECUTED
48354: 4879 0005 d10d pea 5d10d <_Status_Object_name_errors_to_status+0x11f><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4835a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4835e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48360: 4e95 jsr %a5@ <== NOT EXECUTED
48362: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48366: 4200 clrb %d0 <== NOT EXECUTED
48368: 60de bras 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
) {
(*printer)(
4836a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4836c: 4879 0005 d131 pea 5d131 <_Status_Object_name_errors_to_status+0x143><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48372: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48376: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48378: 4e95 jsr %a5@ <== NOT EXECUTED
4837a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
4837e: 4200 clrb %d0 <== NOT EXECUTED
48380: 60c6 bras 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
48382: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48386: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED
int source,
Heap_Walk_printer printer,
Heap_Control *heap
)
{
uintptr_t const page_size = heap->page_size;
4838a: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
4838e: b1ca cmpal %a2,%a0 <== NOT EXECUTED
48390: 6700 032c beqw 486be <_Heap_Walk+0x494> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48394: 242a 0020 movel %a2@(32),%d2 <== NOT EXECUTED
48398: 2d42 fff4 movel %d2,%fp@(-12) <== NOT EXECUTED
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4839c: b1c2 cmpal %d2,%a0 <== NOT EXECUTED
4839e: 6500 0092 bcsw 48432 <_Heap_Walk+0x208> <== NOT EXECUTED
483a2: 286a 0024 moveal %a2@(36),%a4 <== NOT EXECUTED
483a6: b1cc cmpal %a4,%a0 <== NOT EXECUTED
483a8: 6200 0088 bhiw 48432 <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
483ac: 47e8 0008 lea %a0@(8),%a3 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
483b0: 200b movel %a3,%d0 <== NOT EXECUTED
483b2: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
483b6: 4c41 0002 remul %d1,%d2,%d0 <== NOT EXECUTED
);
return false;
}
if (
483ba: 4a82 tstl %d2 <== NOT EXECUTED
483bc: 6600 00a6 bnew 48464 <_Heap_Walk+0x23a> <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
483c0: 74fe moveq #-2,%d2 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
483c2: 7001 moveq #1,%d0 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
483c4: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
483c8: c0b0 2804 andl %a0@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
483cc: 664a bnes 48418 <_Heap_Walk+0x1ee> <== NOT EXECUTED
483ce: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
483d2: 224a moveal %a2,%a1 <== NOT EXECUTED
483d4: 2648 moveal %a0,%a3 <== NOT EXECUTED
483d6: 2d43 fff8 movel %d3,%fp@(-8) <== NOT EXECUTED
);
return false;
}
if ( free_block->prev != prev_block ) {
483da: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
483de: b3c2 cmpal %d2,%a1 <== NOT EXECUTED
483e0: 6600 02c0 bnew 486a2 <_Heap_Walk+0x478> <== NOT EXECUTED
return false;
}
prev_block = free_block;
free_block = free_block->next;
483e4: 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 ) {
483e8: b1ca cmpal %a2,%a0 <== NOT EXECUTED
483ea: 6700 0092 beqw 4847e <_Heap_Walk+0x254> <== NOT EXECUTED
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
483ee: b1c1 cmpal %d1,%a0 <== NOT EXECUTED
483f0: 6540 bcss 48432 <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(
const Heap_Block *block
)
{
return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;
483f2: 2408 movel %a0,%d2 <== NOT EXECUTED
483f4: 5082 addql #8,%d2 <== NOT EXECUTED
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
483f6: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
483f8: 6538 bcss 48432 <_Heap_Walk+0x208> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
483fa: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
483fe: 224b moveal %a3,%a1 <== NOT EXECUTED
48400: 2648 moveal %a0,%a3 <== NOT EXECUTED
48402: 4c40 2003 remul %d0,%d3,%d2 <== NOT EXECUTED
);
return false;
}
if (
48406: 4a83 tstl %d3 <== NOT EXECUTED
48408: 665a bnes 48464 <_Heap_Walk+0x23a> <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4840a: 74fe moveq #-2,%d2 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
4840c: 7001 moveq #1,%d0 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
4840e: c4a8 0004 andl %a0@(4),%d2 <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
48412: c0b0 2804 andl %a0@(00000004,%d2:l),%d0 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48416: 67c2 beqs 483da <_Heap_Walk+0x1b0> <== NOT EXECUTED
(*printer)(
48418: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4841a: 4879 0005 d224 pea 5d224 <_Status_Object_name_errors_to_status+0x236><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48420: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48424: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48426: 4e95 jsr %a5@ <== NOT EXECUTED
48428: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
4842c: 4200 clrb %d0 <== NOT EXECUTED
4842e: 6000 ff18 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {
(*printer)(
48432: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48434: 4879 0005 d1d4 pea 5d1d4 <_Status_Object_name_errors_to_status+0x1e6><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4843a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4843e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48440: 4e95 jsr %a5@ <== NOT EXECUTED
48442: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48446: 4200 clrb %d0 <== NOT EXECUTED
48448: 6000 fefe braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( first_block ) ) {
(*printer)(
4844c: 4879 0005 d162 pea 5d162 <_Status_Object_name_errors_to_status+0x174><== NOT EXECUTED
}
if (
_Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
) {
(*printer)(
48452: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48456: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48458: 4e95 jsr %a5@ <== NOT EXECUTED
4845a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
if ( !_System_state_Is_up( _System_state_Get() ) ) {
return true;
}
if ( !_Heap_Walk_check_control( source, printer, heap ) ) {
return false;
4845e: 4200 clrb %d0 <== NOT EXECUTED
48460: 6000 fe9a braw 482fc <_Heap_Walk+0xd2> <== NOT EXECUTED
}
if (
!_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
) {
(*printer)(
48464: 2f08 movel %a0,%sp@- <== NOT EXECUTED
48466: 4879 0005 d1f4 pea 5d1f4 <_Status_Object_name_errors_to_status+0x206><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4846c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48470: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48472: 4e95 jsr %a5@ <== NOT EXECUTED
48474: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48478: 4200 clrb %d0 <== NOT EXECUTED
4847a: 6000 fecc braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
4847e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
48482: 2844 moveal %d4,%a4 <== NOT EXECUTED
48484: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
48488: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
4848c: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
48490: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED
48494: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
48498: 74fe moveq #-2,%d2 <== NOT EXECUTED
4849a: c483 andl %d3,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4849c: 47f4 2800 lea %a4@(00000000,%d2:l),%a3 <== NOT EXECUTED
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
484a0: b7c1 cmpal %d1,%a3 <== NOT EXECUTED
484a2: 657e bcss 48522 <_Heap_Walk+0x2f8> <== NOT EXECUTED
484a4: b7ea 0024 cmpal %a2@(36),%a3 <== NOT EXECUTED
484a8: 6278 bhis 48522 <_Heap_Walk+0x2f8> <== NOT EXECUTED
uintptr_t const block_begin = (uintptr_t) block;
uintptr_t const block_size = _Heap_Block_size( block );
bool const prev_used = _Heap_Is_prev_used( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
uintptr_t const next_block_begin = (uintptr_t) next_block;
bool const is_not_last_block = block != last_block;
484aa: b9ee ffec cmpal %fp@(-20),%a4 <== NOT EXECUTED
484ae: 56c1 sne %d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(
uintptr_t value,
uintptr_t alignment
)
{
return (value % alignment) == 0;
484b0: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
484b4: 2e02 movel %d2,%d7 <== NOT EXECUTED
484b6: 3241 moveaw %d1,%a1 <== NOT EXECUTED
484b8: 4c40 7001 remul %d0,%d1,%d7 <== NOT EXECUTED
484bc: 2009 movel %a1,%d0 <== NOT EXECUTED
484be: 4480 negl %d0 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
484c0: 4a81 tstl %d1 <== NOT EXECUTED
484c2: 6704 beqs 484c8 <_Heap_Walk+0x29e> <== NOT EXECUTED
484c4: 4a00 tstb %d0 <== NOT EXECUTED
484c6: 667c bnes 48544 <_Heap_Walk+0x31a> <== NOT EXECUTED
);
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
484c8: b486 cmpl %d6,%d2 <== NOT EXECUTED
484ca: 6406 bccs 484d2 <_Heap_Walk+0x2a8> <== NOT EXECUTED
484cc: 4a00 tstb %d0 <== NOT EXECUTED
484ce: 6600 008e bnew 4855e <_Heap_Walk+0x334> <== NOT EXECUTED
);
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
484d2: b7cc cmpal %a4,%a3 <== NOT EXECUTED
484d4: 6206 bhis 484dc <_Heap_Walk+0x2b2> <== NOT EXECUTED
484d6: 4a00 tstb %d0 <== NOT EXECUTED
484d8: 6600 00a8 bnew 48582 <_Heap_Walk+0x358> <== NOT EXECUTED
block->size_and_flag = size | flag;
}
RTEMS_INLINE_ROUTINE bool _Heap_Is_prev_used( const Heap_Block *block )
{
return block->size_and_flag & HEAP_PREV_BLOCK_USED;
484dc: 7001 moveq #1,%d0 <== NOT EXECUTED
484de: 7e01 moveq #1,%d7 <== NOT EXECUTED
484e0: c0ab 0004 andl %a3@(4),%d0 <== NOT EXECUTED
484e4: c687 andl %d7,%d3 <== NOT EXECUTED
);
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
484e6: 4a80 tstl %d0 <== NOT EXECUTED
484e8: 6700 00cc beqw 485b6 <_Heap_Walk+0x38c> <== NOT EXECUTED
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
}
} else if (prev_used) {
484ec: 4a83 tstl %d3 <== NOT EXECUTED
484ee: 6700 00ac beqw 4859c <_Heap_Walk+0x372> <== NOT EXECUTED
(*printer)(
484f2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
484f4: 2f0c movel %a4,%sp@- <== NOT EXECUTED
484f6: 4879 0005 d3c9 pea 5d3c9 <_Status_Object_name_errors_to_status+0x3db><== NOT EXECUTED
484fc: 42a7 clrl %sp@- <== NOT EXECUTED
484fe: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48500: 4e95 jsr %a5@ <== NOT EXECUTED
48502: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
block->prev_size
);
}
block = next_block;
} while ( block != first_block );
48506: b7c4 cmpal %d4,%a3 <== NOT EXECUTED
48508: 6700 fd58 beqw 48262 <_Heap_Walk+0x38> <== NOT EXECUTED
4850c: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED
- HEAP_BLOCK_HEADER_SIZE);
}
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{
return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;
48510: 74fe moveq #-2,%d2 <== NOT EXECUTED
48512: 284b moveal %a3,%a4 <== NOT EXECUTED
48514: c483 andl %d3,%d2 <== NOT EXECUTED
48516: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(
const Heap_Block *block,
uintptr_t offset
)
{
return (Heap_Block *) ((uintptr_t) block + offset);
4851a: 47f4 2800 lea %a4@(00000000,%d2:l),%a3 <== NOT EXECUTED
const Heap_Control *heap,
const Heap_Block *block
)
{
return (uintptr_t) block >= (uintptr_t) heap->first_block
&& (uintptr_t) block <= (uintptr_t) heap->last_block;
4851e: b7c1 cmpal %d1,%a3 <== NOT EXECUTED
48520: 6482 bccs 484a4 <_Heap_Walk+0x27a> <== NOT EXECUTED
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
uintptr_t const next_block_begin = (uintptr_t) next_block;
bool const is_not_last_block = block != last_block;
if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {
(*printer)(
48522: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48524: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48526: 4879 0005 d272 pea 5d272 <_Status_Object_name_errors_to_status+0x284><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
4852c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48530: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48532: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48534: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48538: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4853a: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
48540: 4e5e unlk %fp <== NOT EXECUTED
48542: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
(*printer)(
48544: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48546: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48548: 4879 0005 d29f pea 5d29f <_Status_Object_name_errors_to_status+0x2b1><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
4854e: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48552: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48554: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48556: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
4855a: 4200 clrb %d0 <== NOT EXECUTED
4855c: 60dc bras 4853a <_Heap_Walk+0x310> <== NOT EXECUTED
return false;
}
if ( block_size < min_block_size && is_not_last_block ) {
(*printer)(
4855e: 2f06 movel %d6,%sp@- <== NOT EXECUTED
48560: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48562: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48564: 4879 0005 d2cd pea 5d2cd <_Status_Object_name_errors_to_status+0x2df><== NOT EXECUTED
4856a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4856e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48570: 4e95 jsr %a5@ <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
48572: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48576: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
block,
block_size,
min_block_size
);
return false;
4857c: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4857e: 4e5e unlk %fp <== NOT EXECUTED
48580: 4e75 rts <== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
48582: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48584: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48586: 4879 0005 d2f8 pea 5d2f8 <_Status_Object_name_errors_to_status+0x30a><== NOT EXECUTED
4858c: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48590: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48592: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
48594: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48598: 4200 clrb %d0 <== NOT EXECUTED
4859a: 609e bras 4853a <_Heap_Walk+0x310> <== NOT EXECUTED
"block 0x%08x: size %u\n",
block,
block_size
);
} else {
(*printer)(
4859c: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
4859e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
485a0: 2f0c movel %a4,%sp@- <== NOT EXECUTED
485a2: 4879 0005 d3e0 pea 5d3e0 <_Status_Object_name_errors_to_status+0x3f2><== NOT EXECUTED
485a8: 42a7 clrl %sp@- <== NOT EXECUTED
485aa: 2f05 movel %d5,%sp@- <== NOT EXECUTED
485ac: 4e95 jsr %a5@ <== NOT EXECUTED
485ae: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
485b2: 6000 ff52 braw 48506 <_Heap_Walk+0x2dc> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
485b6: 2e2a 0008 movel %a2@(8),%d7 <== NOT EXECUTED
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
485ba: 43f9 0005 d018 lea 5d018 <_Status_Object_name_errors_to_status+0x2a>,%a1<== NOT EXECUTED
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
485c0: 222c 0008 movel %a4@(8),%d1 <== NOT EXECUTED
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
485c4: b2aa 000c cmpl %a2@(12),%d1 <== NOT EXECUTED
485c8: 670a beqs 485d4 <_Heap_Walk+0x3aa> <== NOT EXECUTED
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
485ca: 43f9 0005 cf60 lea 5cf60 <rtems_filesystem_default_pathconf+0xb4>,%a1<== NOT EXECUTED
485d0: b28a cmpl %a2,%d1 <== NOT EXECUTED
485d2: 6764 beqs 48638 <_Heap_Walk+0x40e> <== NOT EXECUTED
false,
"block 0x%08x: size %u, prev 0x%08x%s, next 0x%08x%s\n",
block,
block_size,
block->prev,
block->prev == first_free_block ?
485d4: 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)(
485d8: 41f9 0005 d031 lea 5d031 <_Status_Object_name_errors_to_status+0x43>,%a0<== NOT EXECUTED
485de: b087 cmpl %d7,%d0 <== NOT EXECUTED
485e0: 670a beqs 485ec <_Heap_Walk+0x3c2> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
485e2: 41f9 0005 cf60 lea 5cf60 <rtems_filesystem_default_pathconf+0xb4>,%a0<== NOT EXECUTED
485e8: b08a cmpl %a2,%d0 <== NOT EXECUTED
485ea: 6754 beqs 48640 <_Heap_Walk+0x416> <== NOT EXECUTED
Heap_Block *const last_free_block = _Heap_Free_list_last( heap );
bool const prev_used = _Heap_Is_prev_used( block );
uintptr_t const block_size = _Heap_Block_size( block );
Heap_Block *const next_block = _Heap_Block_at( block, block_size );
(*printer)(
485ec: 2f09 movel %a1,%sp@- <== NOT EXECUTED
485ee: 2f01 movel %d1,%sp@- <== NOT EXECUTED
485f0: 2f08 movel %a0,%sp@- <== NOT EXECUTED
485f2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
485f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
485f6: 2f0c movel %a4,%sp@- <== NOT EXECUTED
485f8: 4879 0005 d32c pea 5d32c <_Status_Object_name_errors_to_status+0x33e><== NOT EXECUTED
485fe: 42a7 clrl %sp@- <== NOT EXECUTED
48600: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48602: 4e95 jsr %a5@ <== NOT EXECUTED
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
48604: 2213 movel %a3@,%d1 <== NOT EXECUTED
48606: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
4860a: b282 cmpl %d2,%d1 <== NOT EXECUTED
4860c: 663a bnes 48648 <_Heap_Walk+0x41e> <== NOT EXECUTED
);
return false;
}
if ( !prev_used ) {
4860e: 4a83 tstl %d3 <== NOT EXECUTED
48610: 6776 beqs 48688 <_Heap_Walk+0x45e> <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48612: 206a 0008 moveal %a2@(8),%a0 <== NOT EXECUTED
)
{
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *free_block = _Heap_Free_list_first( heap );
while ( free_block != free_list_tail ) {
48616: b1ca cmpal %a2,%a0 <== NOT EXECUTED
48618: 6754 beqs 4866e <_Heap_Walk+0x444> <== NOT EXECUTED
if ( free_block == block ) {
4861a: b1cc cmpal %a4,%a0 <== NOT EXECUTED
4861c: 6700 fee8 beqw 48506 <_Heap_Walk+0x2dc> <== NOT EXECUTED
48620: 2e2e ffec movel %fp@(-20),%d7 <== NOT EXECUTED
return true;
}
free_block = free_block->next;
48624: 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 ) {
48628: b1ca cmpal %a2,%a0 <== NOT EXECUTED
4862a: 6742 beqs 4866e <_Heap_Walk+0x444> <== NOT EXECUTED
if ( free_block == block ) {
4862c: b1cc cmpal %a4,%a0 <== NOT EXECUTED
4862e: 66f4 bnes 48624 <_Heap_Walk+0x3fa> <== NOT EXECUTED
48630: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED
48634: 6000 fed0 braw 48506 <_Heap_Walk+0x2dc> <== NOT EXECUTED
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
block->next,
block->next == last_free_block ?
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
48638: 43f9 0005 d027 lea 5d027 <_Status_Object_name_errors_to_status+0x39>,%a1<== NOT EXECUTED
4863e: 6094 bras 485d4 <_Heap_Walk+0x3aa> <== NOT EXECUTED
block,
block_size,
block->prev,
block->prev == first_free_block ?
" (= first free)"
: (block->prev == free_list_head ? " (= head)" : ""),
48640: 41f9 0005 d041 lea 5d041 <_Status_Object_name_errors_to_status+0x53>,%a0<== NOT EXECUTED
48646: 60a4 bras 485ec <_Heap_Walk+0x3c2> <== NOT EXECUTED
" (= last free)"
: (block->next == free_list_tail ? " (= tail)" : "")
);
if ( block_size != next_block->prev_size ) {
(*printer)(
48648: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4864a: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4864c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4864e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48650: 4879 0005 d361 pea 5d361 <_Status_Object_name_errors_to_status+0x373><== NOT EXECUTED
48656: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4865a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4865c: 4e95 jsr %a5@ <== NOT EXECUTED
4865e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
48662: 4cee 3cfc ffc4 moveml %fp@(-60),%d2-%d7/%a2-%a5 <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48668: 4200 clrb %d0 <== NOT EXECUTED
block = next_block;
} while ( block != first_block );
return true;
}
4866a: 4e5e unlk %fp <== NOT EXECUTED
4866c: 4e75 rts <== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
4866e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
48670: 4879 0005 d405 pea 5d405 <_Status_Object_name_errors_to_status+0x417><== NOT EXECUTED
48676: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4867a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4867c: 4e95 jsr %a5@ <== NOT EXECUTED
4867e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
48682: 4200 clrb %d0 <== NOT EXECUTED
48684: 6000 fcc2 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( !prev_used ) {
(*printer)(
48688: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4868a: 4879 0005 d39a pea 5d39a <_Status_Object_name_errors_to_status+0x3ac><== NOT EXECUTED
return false;
}
if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {
(*printer)(
48690: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48694: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48696: 4e95 jsr %a5@ <== NOT EXECUTED
48698: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
return false;
}
if ( !_Heap_Is_prev_used( next_block ) ) {
if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
return false;
4869c: 4200 clrb %d0 <== NOT EXECUTED
4869e: 6000 fca8 braw 48348 <_Heap_Walk+0x11e> <== NOT EXECUTED
return false;
}
if ( free_block->prev != prev_block ) {
(*printer)(
486a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
486a4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
486a6: 4879 0005 d240 pea 5d240 <_Status_Object_name_errors_to_status+0x252><== NOT EXECUTED
return false;
}
if ( next_block_begin <= block_begin && is_not_last_block ) {
(*printer)(
486ac: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
486b0: 2f05 movel %d5,%sp@- <== NOT EXECUTED
486b2: 4e95 jsr %a5@ <== NOT EXECUTED
"block 0x%08x: next block 0x%08x is not a successor\n",
block,
next_block
);
return false;
486b4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
486b8: 4200 clrb %d0 <== NOT EXECUTED
486ba: 6000 fe7e braw 4853a <_Heap_Walk+0x310> <== NOT EXECUTED
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
486be: 222a 0020 movel %a2@(32),%d1 <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
486c2: 2844 moveal %d4,%a4 <== NOT EXECUTED
const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
const Heap_Block *prev_block = free_list_tail;
const Heap_Block *free_block = first_free_block;
while ( free_block != free_list_tail ) {
486c4: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
);
return false;
}
if ( _Heap_Is_used( free_block ) ) {
486c8: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
486cc: 2d43 fffc movel %d3,%fp@(-4) <== NOT EXECUTED
486d0: 262e fff0 movel %fp@(-16),%d3 <== NOT EXECUTED
486d4: 2d47 ffec movel %d7,%fp@(-20) <== NOT EXECUTED
486d8: 6000 fdbe braw 48498 <_Heap_Walk+0x26e> <== NOT EXECUTED
000481d4 <_Heap_Walk_print>:
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
481d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
481d8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
va_list ap;
if ( error ) {
481dc: 4a2e 000f tstb %fp@(15) <== NOT EXECUTED
481e0: 6624 bnes 48206 <_Heap_Walk_print+0x32> <== NOT EXECUTED
printk( "FAIL[%d]: ", source );
} else {
printk( "PASS[%d]: ", source );
481e2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
481e4: 4879 0005 d00d pea 5d00d <_Status_Object_name_errors_to_status+0x1f><== NOT EXECUTED
481ea: 4eb9 0004 429c jsr 4429c <printk> <== NOT EXECUTED
481f0: 508f addql #8,%sp <== NOT EXECUTED
}
va_start( ap, fmt );
vprintk( fmt, ap );
481f2: 486e 0014 pea %fp@(20) <== NOT EXECUTED
481f6: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
481fa: 4eb9 0004 60b8 jsr 460b8 <vprintk> <== NOT EXECUTED
va_end( ap );
48200: 508f addql #8,%sp <== NOT EXECUTED
}
48202: 4e5e unlk %fp <== NOT EXECUTED
48204: 4e75 rts <== NOT EXECUTED
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{
va_list ap;
if ( error ) {
printk( "FAIL[%d]: ", source );
48206: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48208: 4879 0005 d002 pea 5d002 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED
4820e: 4eb9 0004 429c jsr 4429c <printk> <== NOT EXECUTED
48214: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "PASS[%d]: ", source );
}
va_start( ap, fmt );
vprintk( fmt, ap );
48216: 486e 0014 pea %fp@(20) <== NOT EXECUTED
4821a: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4821e: 4eb9 0004 60b8 jsr 460b8 <vprintk> <== NOT EXECUTED
va_end( ap );
48224: 508f addql #8,%sp <== NOT EXECUTED
}
48226: 4e5e unlk %fp <== NOT EXECUTED
000481cc <_Heap_Walk_print_nothing>:
int source,
bool error,
const char *fmt,
...
)
{
481cc: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/* Do nothing */
}
481d0: 4e5e unlk %fp <== NOT EXECUTED
00046c76 <_IO_Initialize_all_drivers>:
*
* Output Parameters: NONE
*/
void _IO_Initialize_all_drivers( void )
{
46c76: 4e56 0000 linkw %fp,#0
46c7a: 2f0a movel %a2,%sp@-
46c7c: 2f02 movel %d2,%sp@-
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c7e: 4ab9 0005 e768 tstl 5e768 <_IO_Number_of_drivers>
46c84: 671e beqs 46ca4 <_IO_Initialize_all_drivers+0x2e><== NEVER TAKEN
46c86: 4282 clrl %d2
46c88: 45f9 0004 b8ec lea 4b8ec <rtems_io_initialize>,%a2
(void) rtems_io_initialize( major, 0, NULL );
46c8e: 42a7 clrl %sp@-
46c90: 42a7 clrl %sp@-
46c92: 2f02 movel %d2,%sp@-
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c94: 5282 addql #1,%d2
(void) rtems_io_initialize( major, 0, NULL );
46c96: 4e92 jsr %a2@
void _IO_Initialize_all_drivers( void )
{
rtems_device_major_number major;
for ( major=0 ; major < _IO_Number_of_drivers ; major ++ )
46c98: 4fef 000c lea %sp@(12),%sp
46c9c: b4b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d2
46ca2: 65ea bcss 46c8e <_IO_Initialize_all_drivers+0x18>
(void) rtems_io_initialize( major, 0, NULL );
}
46ca4: 242e fff8 movel %fp@(-8),%d2
46ca8: 246e fffc moveal %fp@(-4),%a2
46cac: 4e5e unlk %fp <== NOT EXECUTED
00046bdc <_IO_Manager_initialization>:
* workspace.
*
*/
void _IO_Manager_initialization(void)
{
46bdc: 4e56 fff0 linkw %fp,#-16
46be0: 48d7 003c moveml %d2-%d5,%sp@
uint32_t index;
rtems_driver_address_table *driver_table;
uint32_t drivers_in_table;
uint32_t number_of_drivers;
driver_table = Configuration.Device_driver_table;
46be4: 2639 0005 cd4a movel 5cd4a <Configuration+0x36>,%d3
drivers_in_table = Configuration.number_of_device_drivers;
46bea: 2439 0005 cd46 movel 5cd46 <Configuration+0x32>,%d2
number_of_drivers = Configuration.maximum_drivers;
46bf0: 2839 0005 cd42 movel 5cd42 <Configuration+0x2e>,%d4
/*
* If the user claims there are less drivers than are actually in
* the table, then let's just go with the table's count.
*/
if ( number_of_drivers <= drivers_in_table )
46bf6: b882 cmpl %d2,%d4
46bf8: 6366 blss 46c60 <_IO_Manager_initialization+0x84>
* The application requested extra slots in the driver table, so we
* have to allocate a new driver table and copy theirs to it.
*/
_IO_Driver_address_table = (rtems_driver_address_table *)
_Workspace_Allocate_or_fatal_error(
46bfa: 2004 movel %d4,%d0
46bfc: 2a04 movel %d4,%d5
46bfe: e788 lsll #3,%d0
46c00: eb8d lsll #5,%d5
46c02: 9a80 subl %d0,%d5
46c04: 2f05 movel %d5,%sp@-
46c06: 4eb9 0004 9b02 jsr 49b02 <_Workspace_Allocate_or_fatal_error>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
46c0c: 2f05 movel %d5,%sp@-
46c0e: 42a7 clrl %sp@-
/*
* The application requested extra slots in the driver table, so we
* have to allocate a new driver table and copy theirs to it.
*/
_IO_Driver_address_table = (rtems_driver_address_table *)
46c10: 23c0 0005 e76c movel %d0,5e76c <_IO_Driver_address_table>
_Workspace_Allocate_or_fatal_error(
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
memset(
46c16: 2f00 movel %d0,%sp@-
_IO_Driver_address_table = (rtems_driver_address_table *)
_Workspace_Allocate_or_fatal_error(
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
_IO_Number_of_drivers = number_of_drivers;
46c18: 23c4 0005 e768 movel %d4,5e768 <_IO_Number_of_drivers>
memset(
46c1e: 4eb9 0004 e200 jsr 4e200 <memset>
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c24: 4fef 0010 lea %sp@(16),%sp
46c28: 4a82 tstl %d2
46c2a: 672a beqs 46c56 <_IO_Manager_initialization+0x7a><== NEVER TAKEN
46c2c: 2839 0005 e76c movel 5e76c <_IO_Driver_address_table>,%d4
46c32: 4280 clrl %d0
46c34: 4281 clrl %d1
_IO_Driver_address_table[index] = driver_table[index];
46c36: 2243 moveal %d3,%a1
46c38: 2044 moveal %d4,%a0
46c3a: d3c0 addal %d0,%a1
46c3c: d1c0 addal %d0,%a0
memset(
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c3e: 5281 addql #1,%d1
46c40: 0680 0000 0018 addil #24,%d0
_IO_Driver_address_table[index] = driver_table[index];
46c46: 20d9 movel %a1@+,%a0@+
46c48: 20d9 movel %a1@+,%a0@+
46c4a: 20d9 movel %a1@+,%a0@+
46c4c: 20d9 movel %a1@+,%a0@+
46c4e: 20d9 movel %a1@+,%a0@+
46c50: 2091 movel %a1@,%a0@
memset(
_IO_Driver_address_table, 0,
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
46c52: b282 cmpl %d2,%d1
46c54: 65e0 bcss 46c36 <_IO_Manager_initialization+0x5a>
_IO_Driver_address_table[index] = driver_table[index];
}
46c56: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c5c: 4e5e unlk %fp
46c5e: 4e75 rts
* If the maximum number of driver is the same as the number in the
* table, then we do not have to copy the driver table. They can't
* register any dynamically.
*/
if ( number_of_drivers == drivers_in_table ) {
_IO_Driver_address_table = driver_table;
46c60: 23c3 0005 e76c movel %d3,5e76c <_IO_Driver_address_table>
_IO_Number_of_drivers = number_of_drivers;
46c66: 23c2 0005 e768 movel %d2,5e768 <_IO_Number_of_drivers>
sizeof( rtems_driver_address_table ) * ( number_of_drivers )
);
for ( index = 0 ; index < drivers_in_table ; index++ )
_IO_Driver_address_table[index] = driver_table[index];
}
46c6c: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5
46c72: 4e5e unlk %fp <== NOT EXECUTED
00047810 <_Internal_error_Occurred>:
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
47810: 4e56 fffc linkw %fp,#-4
47814: 206e 0010 moveal %fp@(16),%a0
47818: 2f02 movel %d2,%sp@-
4781a: 222e 000c movel %fp@(12),%d1
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
4781e: 4282 clrl %d2
47820: 1401 moveb %d1,%d2
47822: 2242 moveal %d2,%a1
47824: 2f08 movel %a0,%sp@-
void _Internal_error_Occurred(
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
47826: 202e 0008 movel %fp@(8),%d0
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
4782a: 2f09 movel %a1,%sp@-
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
_Internal_errors_What_happened.is_internal = is_internal;
4782c: 13c1 0005 e5f2 moveb %d1,5e5f2 <_Internal_errors_What_happened+0x4>
_Internal_errors_What_happened.the_error = the_error;
_User_extensions_Fatal( the_source, is_internal, the_error );
47832: 2d48 fffc movel %a0,%fp@(-4)
bool is_internal,
Internal_errors_t the_error
)
{
_Internal_errors_What_happened.the_source = the_source;
47836: 23c0 0005 e5ee movel %d0,5e5ee <_Internal_errors_What_happened>
_Internal_errors_What_happened.is_internal = is_internal;
_Internal_errors_What_happened.the_error = the_error;
4783c: 23c8 0005 e5f4 movel %a0,5e5f4 <_Internal_errors_What_happened+0x6>
_User_extensions_Fatal( the_source, is_internal, the_error );
47842: 2f00 movel %d0,%sp@-
47844: 4eb9 0004 968e jsr 4968e <_User_extensions_Fatal>
_System_state_Set( SYSTEM_STATE_FAILED );
_CPU_Fatal_halt( the_error );
4784a: 206e fffc moveal %fp@(-4),%a0 <== NOT EXECUTED
4784e: 327c 0700 moveaw #1792,%a1 <== NOT EXECUTED
47852: 2409 movel %a1,%d2 <== NOT EXECUTED
47854: 40c0 movew %sr,%d0 <== NOT EXECUTED
47856: 8082 orl %d2,%d0 <== NOT EXECUTED
47858: 46c0 movew %d0,%sr <== NOT EXECUTED
4785a: 2008 movel %a0,%d0 <== NOT EXECUTED
4785c: 223c dead beef movel #-559038737,%d1 <== NOT EXECUTED
47862: 4ac8 halt <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _System_state_Set (
System_state_Codes state
)
{
_System_state_Current = state;
47864: 7005 moveq #5,%d0 <== NOT EXECUTED
47866: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4786a: 23c0 0005 e6a0 movel %d0,5e6a0 <_System_state_Current> <== NOT EXECUTED
47870: 60fe bras 47870 <_Internal_error_Occurred+0x60> <== NOT EXECUTED
...
00054a10 <_Message_queue_Allocate>:
* Output parameters:
* the_message_queue - set if successful, NULL otherwise
*/
Message_queue_Control *_Message_queue_Allocate(void)
{
54a10: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (Message_queue_Control *)
_Objects_Allocate(&_Message_queue_Information);
54a14: 4879 0006 85d8 pea 685d8 <_Message_queue_Information> <== NOT EXECUTED
54a1a: 4eb9 0005 0d08 jsr 50d08 <_Objects_Allocate> <== NOT EXECUTED
}
54a20: 4e5e unlk %fp <== NOT EXECUTED
0004efa4 <_Message_queue_Translate_core_message_queue_return_code>:
#if defined(RTEMS_DEBUG)
if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT )
return RTEMS_INTERNAL_ERROR;
#endif
return _Message_queue_Translate_core_return_code_[status];
4efa4: 41f9 0006 6c1c lea 66c1c <_Message_queue_Translate_core_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Message_queue_Translate_core_message_queue_return_code (
uint32_t status
)
{
4efaa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
if ( status > CORE_MESSAGE_QUEUE_STATUS_TIMEOUT )
return RTEMS_INTERNAL_ERROR;
#endif
return _Message_queue_Translate_core_return_code_[status];
}
4efae: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4efb2: 4e5e unlk %fp <== NOT EXECUTED
4efb4: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004be94 <_Objects_API_maximum_class>:
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4be94: 7202 moveq #2,%d1
4be96: 4e56 0000 linkw %fp,#0
4be9a: 202e 0008 movel %fp@(8),%d0
4be9e: 5380 subql #1,%d0
4bea0: b280 cmpl %d0,%d1
4bea2: 650e bcss 4beb2 <_Objects_API_maximum_class+0x1e><== NEVER TAKEN
4bea4: 41f9 0005 c2e4 lea 5c2e4 <CSWTCH.1>,%a0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4beaa: 4e5e unlk %fp
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4beac: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4beb0: 4e75 rts
#include <rtems/score/object.h>
unsigned int _Objects_API_maximum_class(
uint32_t api
)
{
4beb2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_NO_API:
default:
break;
}
return 0;
}
4beb4: 4e5e unlk %fp <== NOT EXECUTED
000478cc <_Objects_Allocate>:
*/
Objects_Control *_Objects_Allocate(
Objects_Information *information
)
{
478cc: 4e56 fff0 linkw %fp,#-16
478d0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
478d4: 246e 0008 moveal %fp@(8),%a2
* If the application is using the optional manager stubs and
* still attempts to create the object, the information block
* should be all zeroed out because it is in the BSS. So let's
* check that code for this manager is even present.
*/
if ( information->size == 0 )
478d8: 4aaa 0014 tstl %a2@(20)
478dc: 660c bnes 478ea <_Objects_Allocate+0x1e> <== ALWAYS TAKEN
return NULL;
478de: 4280 clrl %d0 <== NOT EXECUTED
);
}
#endif
return the_object;
}
478e0: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
478e6: 4e5e unlk %fp
478e8: 4e75 rts
/*
* OK. The manager should be initialized and configured to have objects.
* With any luck, it is safe to attempt to allocate an object.
*/
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
478ea: 240a movel %a2,%d2
478ec: 0682 0000 001c addil #28,%d2
478f2: 47f9 0004 6ef8 lea 46ef8 <_Chain_Get>,%a3
478f8: 2f02 movel %d2,%sp@-
478fa: 4e93 jsr %a3@
if ( information->auto_extend ) {
478fc: 588f addql #4,%sp
478fe: 4a2a 0010 tstb %a2@(16)
47902: 67dc beqs 478e0 <_Objects_Allocate+0x14>
/*
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
47904: 4a80 tstl %d0
47906: 6738 beqs 47940 <_Objects_Allocate+0x74> <== NEVER TAKEN
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47908: 2040 moveal %d0,%a0
4790a: 4281 clrl %d1
4790c: 4283 clrl %d3
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
4790e: 4282 clrl %d2
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47910: 362a 0008 movew %a2@(8),%d3
47914: 3228 000a movew %a0@(10),%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47918: 342a 0012 movew %a2@(18),%d2
information->inactive_per_block[ block ]--;
4791c: 206a 002a moveal %a2@(42),%a0
}
if ( the_object ) {
uint32_t block;
block = (uint32_t) _Objects_Get_index( the_object->id ) -
47920: 9283 subl %d3,%d1
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
47922: 4c42 1001 remul %d2,%d1,%d1
information->inactive_per_block[ block ]--;
information->inactive--;
47926: 326a 0028 moveaw %a2@(40),%a1
block = (uint32_t) _Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
information->inactive_per_block[ block ]--;
4792a: e589 lsll #2,%d1
information->inactive--;
4792c: 5389 subql #1,%a1
block = (uint32_t) _Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id );
block /= information->allocation_size;
information->inactive_per_block[ block ]--;
4792e: d1c1 addal %d1,%a0
47930: 5390 subql #1,%a0@
information->inactive--;
47932: 3549 0028 movew %a1,%a2@(40)
);
}
#endif
return the_object;
}
47936: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
4793c: 4e5e unlk %fp
4793e: 4e75 rts
* If the list is empty then we are out of objects and need to
* extend information base.
*/
if ( !the_object ) {
_Objects_Extend_information( information );
47940: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47942: 4eb9 0004 7988 jsr 47988 <_Objects_Extend_information> <== NOT EXECUTED
the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
47948: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4794a: 4e93 jsr %a3@ <== NOT EXECUTED
}
if ( the_object ) {
4794c: 508f addql #8,%sp <== NOT EXECUTED
4794e: 4a80 tstl %d0 <== NOT EXECUTED
47950: 66b6 bnes 47908 <_Objects_Allocate+0x3c> <== NOT EXECUTED
);
}
#endif
return the_object;
}
47952: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47958: 4e5e unlk %fp <== NOT EXECUTED
0004795c <_Objects_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
4795c: 4280 clrl %d0
void _Objects_Close(
Objects_Information *information,
Objects_Control *the_object
)
{
4795e: 4e56 0000 linkw %fp,#0
47962: 226e 000c moveal %fp@(12),%a1
47966: 206e 0008 moveal %fp@(8),%a0
4796a: 2f0a movel %a2,%sp@-
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4796c: 2468 0018 moveal %a0@(24),%a2
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
47970: 3029 000a movew %a1@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47974: 42b2 0c00 clrl %a2@(00000000,%d0:l:4)
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
}
47978: 245f moveal %sp@+,%a2
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
4797a: 2d49 000c movel %a1,%fp@(12)
}
4797e: 4e5e unlk %fp
Objects_Control *the_object
)
{
_Objects_Invalidate_Id( information, the_object );
_Objects_Namespace_remove( information, the_object );
47980: 4ef9 0004 7f08 jmp 47f08 <_Objects_Namespace_remove>
...
00047988 <_Objects_Extend_information>:
*/
void _Objects_Extend_information(
Objects_Information *information
)
{
47988: 4e56 ffcc linkw %fp,#-52
4798c: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
47990: 246e 0008 moveal %fp@(8),%a2
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
47994: 4285 clrl %d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47996: 206a 002e moveal %a2@(46),%a0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
4799a: 3a2a 0008 movew %a2@(8),%d5
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
4799e: 4a88 tstl %a0
479a0: 6700 0232 beqw 47bd4 <_Objects_Extend_information+0x24c>
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
479a4: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED
479a8: 302a 0012 movew %a2@(18),%d0 <== NOT EXECUTED
479ac: 3801 movew %d1,%d4 <== NOT EXECUTED
479ae: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
479b4: 88c0 divuw %d0,%d4 <== NOT EXECUTED
479b6: 0284 0000 ffff andil #65535,%d4 <== NOT EXECUTED
for ( ; block < block_count; block++ ) {
479bc: 6700 022c beqw 47bea <_Objects_Extend_information+0x262><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
479c0: 4a90 tstl %a0@ <== NOT EXECUTED
479c2: 6700 0236 beqw 47bfa <_Objects_Extend_information+0x272><== NOT EXECUTED
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
479c6: 5888 addql #4,%a0 <== NOT EXECUTED
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
479c8: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
479ca: 4282 clrl %d2 <== NOT EXECUTED
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
479cc: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
break;
} else
index_base += information->allocation_size;
479d2: d680 addl %d0,%d3 <== NOT EXECUTED
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
479d4: 5282 addql #1,%d2 <== NOT EXECUTED
479d6: b484 cmpl %d4,%d2 <== NOT EXECUTED
479d8: 6400 01a6 bccw 47b80 <_Objects_Extend_information+0x1f8><== NOT EXECUTED
if ( information->object_blocks[ block ] == NULL ) {
479dc: 4a98 tstl %a0@+ <== NOT EXECUTED
479de: 66f2 bnes 479d2 <_Objects_Extend_information+0x4a><== NOT EXECUTED
do_extend = false;
479e0: 4207 clrb %d7 <== NOT EXECUTED
} else
index_base += information->allocation_size;
}
}
maximum = (uint32_t) information->maximum + information->allocation_size;
479e2: 0281 0000 ffff andil #65535,%d1
479e8: 2641 moveal %d1,%a3
479ea: d7c0 addal %d0,%a3
/*
* We need to limit the number of objects to the maximum number
* representable in the index portion of the object Id. In the
* case of 16-bit Ids, this is only 256 object instances.
*/
if ( maximum > OBJECTS_ID_FINAL_INDEX ) {
479ec: b7fc 0000 ffff cmpal #65535,%a3
479f2: 6200 0182 bhiw 47b76 <_Objects_Extend_information+0x1ee>
/*
* Allocate the name table, and the objects and if it fails either return or
* generate a fatal error depending on auto-extending being active.
*/
block_size = information->allocation_size * information->size;
479f6: 41ea 0014 lea %a2@(20),%a0
479fa: 4c10 0800 mulsl %a0@,%d0
if ( information->auto_extend ) {
479fe: 4a2a 0010 tstb %a2@(16)
47a02: 6700 0182 beqw 47b86 <_Objects_Extend_information+0x1fe>
new_object_block = _Workspace_Allocate( block_size );
47a06: 2f00 movel %d0,%sp@-
47a08: 4eb9 0004 9ace jsr 49ace <_Workspace_Allocate>
if ( !new_object_block )
47a0e: 588f addql #4,%sp
* Allocate the name table, and the objects and if it fails either return or
* generate a fatal error depending on auto-extending being active.
*/
block_size = information->allocation_size * information->size;
if ( information->auto_extend ) {
new_object_block = _Workspace_Allocate( block_size );
47a10: 2c00 movel %d0,%d6
if ( !new_object_block )
47a12: 6700 0162 beqw 47b76 <_Objects_Extend_information+0x1ee>
}
/*
* Do we need to grow the tables?
*/
if ( do_extend ) {
47a16: 4a07 tstb %d7
47a18: 6700 00c4 beqw 47ade <_Objects_Extend_information+0x156>
*/
/*
* Up the block count and maximum
*/
block_count++;
47a1c: 2a44 moveal %d4,%a5
47a1e: 528d addql #1,%a5
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
47a20: 200b movel %a3,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a22: 41f5 da00 lea %a5@(00000000,%a5:l:2),%a0
((maximum + minimum_index) * sizeof(Objects_Control *));
47a26: d088 addl %a0,%d0
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
47a28: d085 addl %d5,%d0
block_count++;
/*
* Allocate the tables and break it up.
*/
block_size = block_count *
47a2a: e588 lsll #2,%d0
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
object_blocks = (void**) _Workspace_Allocate( block_size );
47a2c: 2f00 movel %d0,%sp@-
47a2e: 4eb9 0004 9ace jsr 49ace <_Workspace_Allocate>
if ( !object_blocks ) {
47a34: 588f addql #4,%sp
* Allocate the tables and break it up.
*/
block_size = block_count *
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
object_blocks = (void**) _Workspace_Allocate( block_size );
47a36: 2840 moveal %d0,%a4
if ( !object_blocks ) {
47a38: 4a80 tstl %d0
47a3a: 6700 01ce beqw 47c0a <_Objects_Extend_information+0x282>
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a3e: 2e0d movel %a5,%d7
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
47a40: 4280 clrl %d0
}
/*
* Break the block into the various sections.
*/
inactive_per_block = (uint32_t *) _Addresses_Add_offset(
47a42: e58f lsll #2,%d7
* Take the block count down. Saves all the (block_count - 1)
* in the copies.
*/
block_count--;
if ( information->maximum > minimum_index ) {
47a44: 302a 000e movew %a2@(14),%d0
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
47a48: 4bf4 7800 lea %a4@(00000000,%d7:l),%a5
47a4c: de8d addl %a5,%d7
47a4e: b085 cmpl %d5,%d0
47a50: 6200 0144 bhiw 47b96 <_Objects_Extend_information+0x20e>
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47a54: 4a85 tstl %d5
47a56: 670c beqs 47a64 <_Objects_Extend_information+0xdc><== NEVER TAKEN
47a58: 2047 moveal %d7,%a0
47a5a: 4280 clrl %d0
local_table[ index ] = NULL;
47a5c: 4298 clrl %a0@+
} else {
/*
* Deal with the special case of the 0 to minimum_index
*/
for ( index = 0; index < minimum_index; index++ ) {
47a5e: 5280 addql #1,%d0
47a60: b085 cmpl %d5,%d0
47a62: 65f8 bcss 47a5c <_Objects_Extend_information+0xd4><== NEVER TAKEN
47a64: e58c lsll #2,%d4
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a66: 4281 clrl %d1
}
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
47a68: 42b4 4800 clrl %a4@(00000000,%d4:l)
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a6c: 322a 0012 movew %a2@(18),%d1
/*
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
47a70: 42b5 4800 clrl %a5@(00000000,%d4:l)
for ( index=index_base ;
index < ( information->allocation_size + index_base );
47a74: d283 addl %d3,%d1
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
47a76: b283 cmpl %d3,%d1
47a78: 6310 blss 47a8a <_Objects_Extend_information+0x102><== NEVER TAKEN
47a7a: 2247 moveal %d7,%a1
* information - object information table
*
* Output parameters: NONE
*/
void _Objects_Extend_information(
47a7c: 2003 movel %d3,%d0
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
47a7e: 41f1 3c00 lea %a1@(00000000,%d3:l:4),%a0
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
47a82: 4298 clrl %a0@+
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
index < ( information->allocation_size + index_base );
index++ ) {
47a84: 5280 addql #1,%d0
* Initialise the new entries in the table.
*/
object_blocks[block_count] = NULL;
inactive_per_block[block_count] = 0;
for ( index=index_base ;
47a86: b280 cmpl %d0,%d1
47a88: 62f8 bhis 47a82 <_Objects_Extend_information+0xfa>
index < ( information->allocation_size + index_base );
index++ ) {
local_table[ index ] = NULL;
}
_ISR_Disable( level );
47a8a: 203c 0000 0700 movel #1792,%d0
47a90: 40c4 movew %sr,%d4
47a92: 8084 orl %d4,%d0
47a94: 46c0 movew %d0,%sr
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47a96: 2012 movel %a2@,%d0
47a98: 7a18 moveq #24,%d5
information->object_blocks = object_blocks;
information->inactive_per_block = inactive_per_block;
information->local_table = local_table;
information->maximum = (Objects_Maximum) maximum;
information->maximum_id = _Objects_Build_id(
47a9a: 4281 clrl %d1
47a9c: eba8 lsll %d5,%d0
47a9e: 4285 clrl %d5
47aa0: 3a0b movew %a3,%d5
47aa2: 322a 0004 movew %a2@(4),%d1
47aa6: 08c0 0010 bset #16,%d0
47aaa: 2245 moveal %d5,%a1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47aac: 7a1b moveq #27,%d5
47aae: eba9 lsll %d5,%d1
local_table[ index ] = NULL;
}
_ISR_Disable( level );
old_tables = information->object_blocks;
47ab0: 206a 002e moveal %a2@(46),%a0
47ab4: 8081 orl %d1,%d0
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47ab6: 2209 movel %a1,%d1
47ab8: 8280 orl %d0,%d1
information->object_blocks = object_blocks;
information->inactive_per_block = inactive_per_block;
information->local_table = local_table;
information->maximum = (Objects_Maximum) maximum;
47aba: 354b 000e movew %a3,%a2@(14)
_ISR_Disable( level );
old_tables = information->object_blocks;
information->object_blocks = object_blocks;
47abe: 254c 002e movel %a4,%a2@(46)
information->inactive_per_block = inactive_per_block;
47ac2: 254d 002a movel %a5,%a2@(42)
47ac6: 2541 000a movel %d1,%a2@(10)
information->local_table = local_table;
47aca: 2547 0018 movel %d7,%a2@(24)
information->the_class,
_Objects_Local_node,
information->maximum
);
_ISR_Enable( level );
47ace: 46c4 movew %d4,%sr
if ( old_tables )
47ad0: 4a88 tstl %a0
47ad2: 670a beqs 47ade <_Objects_Extend_information+0x156><== ALWAYS TAKEN
_Workspace_Free( old_tables );
47ad4: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47ad6: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
47adc: 588f addql #4,%sp <== NOT EXECUTED
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47ade: 206a 002e moveal %a2@(46),%a0
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47ae2: 4280 clrl %d0
47ae4: 280e movel %fp,%d4
47ae6: 0684 ffff fff4 addil #-12,%d4
47aec: 47f9 0004 6ef8 lea 46ef8 <_Chain_Get>,%a3
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47af2: 2a0a movel %a2,%d5
47af4: 0685 0000 001c addil #28,%d5
47afa: 49f9 0004 6e98 lea 46e98 <_Chain_Append>,%a4
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b00: e58a lsll #2,%d2
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b02: 302a 0012 movew %a2@(18),%d0
}
/*
* Assign the new object block to the object block table.
*/
information->object_blocks[ block ] = new_object_block;
47b06: 2186 2800 movel %d6,%a0@(00000000,%d2:l)
/*
* Initialize objects .. add to a local chain first.
*/
_Chain_Initialize(
47b0a: 2f2a 0014 movel %a2@(20),%sp@-
47b0e: 2f00 movel %d0,%sp@-
47b10: 2f06 movel %d6,%sp@-
47b12: 2f04 movel %d4,%sp@-
47b14: 4eb9 0004 b934 jsr 4b934 <_Chain_Initialize>
/*
* Move from the local chain, initialise, then append to the inactive chain
*/
index = index_base;
while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
47b1a: 4fef 0010 lea %sp@(16),%sp
47b1e: 2f04 movel %d4,%sp@-
47b20: 4e93 jsr %a3@
47b22: 588f addql #4,%sp
47b24: 4a80 tstl %d0
47b26: 6734 beqs 47b5c <_Objects_Extend_information+0x1d4><== NEVER TAKEN
47b28: 2212 movel %a2@,%d1
47b2a: 7e18 moveq #24,%d7
the_object->id = _Objects_Build_id(
47b2c: 4286 clrl %d6
47b2e: 2040 moveal %d0,%a0
47b30: 3c2a 0004 movew %a2@(4),%d6
47b34: efa9 lsll %d7,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b36: 1e3c 001b moveb #27,%d7
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b3a: 08c1 0010 bset #16,%d1
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47b3e: efae lsll %d7,%d6
47b40: 8286 orl %d6,%d1
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47b42: 8283 orl %d3,%d1
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
47b44: 5283 addql #1,%d3
47b46: 2141 0008 movel %d1,%a0@(8)
information->the_class,
_Objects_Local_node,
index
);
_Chain_Append( &information->Inactive, &the_object->Node );
47b4a: 2f00 movel %d0,%sp@-
47b4c: 2f05 movel %d5,%sp@-
47b4e: 4e94 jsr %a4@
index++;
47b50: 508f addql #8,%sp
/*
* Move from the local chain, initialise, then append to the inactive chain
*/
index = index_base;
while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
47b52: 2f04 movel %d4,%sp@-
47b54: 4e93 jsr %a3@
47b56: 588f addql #4,%sp
47b58: 4a80 tstl %d0
47b5a: 66cc bnes 47b28 <_Objects_Extend_information+0x1a0>
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b5c: 4281 clrl %d1
47b5e: 302a 0012 movew %a2@(18),%d0
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47b62: 326a 0028 moveaw %a2@(40),%a1
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b66: 206a 002a moveal %a2@(42),%a0
47b6a: 3200 movew %d0,%d1
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
47b6c: d089 addl %a1,%d0
_Chain_Append( &information->Inactive, &the_object->Node );
index++;
}
information->inactive_per_block[ block ] = information->allocation_size;
47b6e: 2181 2800 movel %d1,%a0@(00000000,%d2:l)
information->inactive =
47b72: 3540 0028 movew %d0,%a2@(40)
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47b76: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5
47b7c: 4e5e unlk %fp
47b7e: 4e75 rts
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
47b80: 7e01 moveq #1,%d7 <== NOT EXECUTED
47b82: 6000 fe5e braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED
if ( information->auto_extend ) {
new_object_block = _Workspace_Allocate( block_size );
if ( !new_object_block )
return;
} else {
new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
47b86: 2f00 movel %d0,%sp@-
47b88: 4eb9 0004 9b02 jsr 49b02 <_Workspace_Allocate_or_fatal_error>
47b8e: 588f addql #4,%sp
47b90: 2c00 movel %d0,%d6
47b92: 6000 fe82 braw 47a16 <_Objects_Extend_information+0x8e>
/*
* Copy each section of the table over. This has to be performed as
* separate parts as size of each block has changed.
*/
memcpy( object_blocks,
47b96: e58c lsll #2,%d4 <== NOT EXECUTED
47b98: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47b9a: 2f2a 002e movel %a2@(46),%sp@- <== NOT EXECUTED
47b9e: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47ba0: 4eb9 0004 e190 jsr 4e190 <memcpy> <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
47ba6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
47ba8: 2f2a 002a movel %a2@(42),%sp@- <== NOT EXECUTED
47bac: 2f0d movel %a5,%sp@- <== NOT EXECUTED
47bae: 4eb9 0004 e190 jsr 4e190 <memcpy> <== NOT EXECUTED
information->inactive_per_block,
block_count * sizeof(uint32_t) );
memcpy( local_table,
information->local_table,
(information->maximum + minimum_index) * sizeof(Objects_Control *) );
47bb4: 4280 clrl %d0 <== NOT EXECUTED
47bb6: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
47bba: da80 addl %d0,%d5 <== NOT EXECUTED
information->object_blocks,
block_count * sizeof(void*) );
memcpy( inactive_per_block,
information->inactive_per_block,
block_count * sizeof(uint32_t) );
memcpy( local_table,
47bbc: e58d lsll #2,%d5 <== NOT EXECUTED
47bbe: 2f05 movel %d5,%sp@- <== NOT EXECUTED
47bc0: 2f2a 0018 movel %a2@(24),%sp@- <== NOT EXECUTED
47bc4: 2f07 movel %d7,%sp@- <== NOT EXECUTED
47bc6: 4eb9 0004 e190 jsr 4e190 <memcpy> <== NOT EXECUTED
47bcc: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
47bd0: 6000 fe94 braw 47a66 <_Objects_Extend_information+0xde><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47bd4: 4280 clrl %d0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
minimum_index = _Objects_Get_index( information->minimum_id );
47bd6: 2605 movel %d5,%d3
index_base = minimum_index;
block = 0;
47bd8: 4282 clrl %d2
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
block_count = 0;
47bda: 4284 clrl %d4
minimum_index = _Objects_Get_index( information->minimum_id );
index_base = minimum_index;
block = 0;
/* if ( information->maximum < minimum_index ) */
if ( information->object_blocks == NULL )
47bdc: 322a 000e movew %a2@(14),%d1
47be0: 302a 0012 movew %a2@(18),%d0
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
47be4: 7e01 moveq #1,%d7
47be6: 6000 fdfa braw 479e2 <_Objects_Extend_information+0x5a>
minimum_index = _Objects_Get_index( information->minimum_id );
47bea: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47bec: 4282 clrl %d2 <== NOT EXECUTED
if ( information->object_blocks == NULL )
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
47bee: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
/*
* Search for a free block of indexes. If we do NOT need to allocate or
* extend the block table, then we will change do_extend.
*/
do_extend = true;
47bf4: 7e01 moveq #1,%d7 <== NOT EXECUTED
47bf6: 6000 fdea braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED
minimum_index = _Objects_Get_index( information->minimum_id );
47bfa: 2605 movel %d5,%d3 <== NOT EXECUTED
index_base = minimum_index;
block = 0;
47bfc: 4282 clrl %d2 <== NOT EXECUTED
block_count = 0;
else {
block_count = information->maximum / information->allocation_size;
for ( ; block < block_count; block++ ) {
if ( information->object_blocks[ block ] == NULL ) {
47bfe: 0280 0000 ffff andil #65535,%d0 <== NOT EXECUTED
do_extend = false;
47c04: 4207 clrb %d7 <== NOT EXECUTED
47c06: 6000 fdda braw 479e2 <_Objects_Extend_information+0x5a><== NOT EXECUTED
(sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
((maximum + minimum_index) * sizeof(Objects_Control *));
object_blocks = (void**) _Workspace_Allocate( block_size );
if ( !object_blocks ) {
_Workspace_Free( new_object_block );
47c0a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
47c0c: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
return;
47c12: 588f addql #4,%sp <== NOT EXECUTED
}
information->inactive_per_block[ block ] = information->allocation_size;
information->inactive =
(Objects_Maximum)(information->inactive + information->allocation_size);
}
47c14: 4cee 3cfc ffcc moveml %fp@(-52),%d2-%d7/%a2-%a5 <== NOT EXECUTED
47c1a: 4e5e unlk %fp <== NOT EXECUTED
...
00047c20 <_Objects_Free>:
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
47c20: 4e56 fff0 linkw %fp,#-16
47c24: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
47c28: 266e 000c moveal %fp@(12),%a3
47c2c: 246e 0008 moveal %fp@(8),%a2
uint32_t allocation_size = information->allocation_size;
_Chain_Append( &information->Inactive, &the_object->Node );
47c30: 2f0b movel %a3,%sp@-
47c32: 486a 001c pea %a2@(28)
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47c36: 342a 0012 movew %a2@(18),%d2
_Chain_Append( &information->Inactive, &the_object->Node );
47c3a: 4eb9 0004 6e98 jsr 46e98 <_Chain_Append>
if ( information->auto_extend ) {
47c40: 508f addql #8,%sp
47c42: 4a2a 0010 tstb %a2@(16)
47c46: 6740 beqs 47c88 <_Objects_Free+0x68> <== ALWAYS TAKEN
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47c48: 4280 clrl %d0 <== NOT EXECUTED
47c4a: 4283 clrl %d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c4c: 4281 clrl %d1 <== NOT EXECUTED
_Chain_Append( &information->Inactive, &the_object->Node );
if ( information->auto_extend ) {
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47c4e: 302b 000a movew %a3@(10),%d0 <== NOT EXECUTED
47c52: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c56: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
47c5a: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
_Chain_Append( &information->Inactive, &the_object->Node );
if ( information->auto_extend ) {
uint32_t block;
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
47c5e: 9083 subl %d3,%d0 <== NOT EXECUTED
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
47c60: 4c41 0000 remul %d1,%d0,%d0 <== NOT EXECUTED
information->inactive_per_block[ block ]++;
information->inactive++;
47c64: 322a 0028 movew %a2@(40),%d1 <== NOT EXECUTED
void _Objects_Free(
Objects_Information *information,
Objects_Control *the_object
)
{
uint32_t allocation_size = information->allocation_size;
47c68: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
47c6e: e588 lsll #2,%d0 <== NOT EXECUTED
information->inactive++;
47c70: 5281 addql #1,%d1 <== NOT EXECUTED
/*
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
47c72: 2602 movel %d2,%d3 <== NOT EXECUTED
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
47c74: d1c0 addal %d0,%a0 <== NOT EXECUTED
47c76: 5290 addql #1,%a0@ <== NOT EXECUTED
/*
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
47c78: 4280 clrl %d0 <== NOT EXECUTED
47c7a: e28b lsrl #1,%d3 <== NOT EXECUTED
47c7c: d483 addl %d3,%d2 <== NOT EXECUTED
47c7e: 3001 movew %d1,%d0 <== NOT EXECUTED
block = (uint32_t) (_Objects_Get_index( the_object->id ) -
_Objects_Get_index( information->minimum_id ));
block /= information->allocation_size;
information->inactive_per_block[ block ]++;
information->inactive++;
47c80: 3541 0028 movew %d1,%a2@(40) <== NOT EXECUTED
/*
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
47c84: b480 cmpl %d0,%d2 <== NOT EXECUTED
47c86: 650a bcss 47c92 <_Objects_Free+0x72> <== NOT EXECUTED
_Objects_Shrink_information( information );
}
}
}
47c88: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3
47c8e: 4e5e unlk %fp
47c90: 4e75 rts
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
_Objects_Shrink_information( information );
47c92: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
}
47c96: 4cee 0c0c fff0 moveml %fp@(-16),%d2-%d3/%a2-%a3 <== NOT EXECUTED
47c9c: 4e5e unlk %fp <== NOT EXECUTED
* Check if the threshold level has been met of
* 1.5 x allocation_size are free.
*/
if ( information->inactive > ( allocation_size + ( allocation_size >> 1 ) ) ) {
_Objects_Shrink_information( information );
47c9e: 4ef9 0004 7f98 jmp 47f98 <_Objects_Shrink_information> <== NOT EXECUTED
00047d8c <_Objects_Get>:
* always NULL.
*
* If the Id is valid but the object has not been created yet, then
* the local_table entry will be NULL.
*/
index = id - information->minimum_id + 1;
47d8c: 7001 moveq #1,%d0
/*
* If the index is less than maximum, then it is OK to use it to
* index into the local_table array.
*/
if ( index <= information->maximum ) {
47d8e: 4281 clrl %d1
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47d90: 4e56 fffc linkw %fp,#-4
47d94: 206e 0008 moveal %fp@(8),%a0
* always NULL.
*
* If the Id is valid but the object has not been created yet, then
* the local_table entry will be NULL.
*/
index = id - information->minimum_id + 1;
47d98: 90a8 0006 subl %a0@(6),%d0
47d9c: d0ae 000c addl %fp@(12),%d0
Objects_Control *_Objects_Get(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
47da0: 2f0a movel %a2,%sp@-
47da2: 246e 0010 moveal %fp@(16),%a2
/*
* If the index is less than maximum, then it is OK to use it to
* index into the local_table array.
*/
if ( index <= information->maximum ) {
47da6: 3228 000e movew %a0@(14),%d1
47daa: b280 cmpl %d0,%d1
47dac: 6522 bcss 47dd0 <_Objects_Get+0x44> <== NEVER TAKEN
47dae: 2239 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d1
47db4: 5281 addql #1,%d1
47db6: 23c1 0005 e538 movel %d1,5e538 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( (the_object = information->local_table[ index ]) != NULL ) {
47dbc: 2068 0018 moveal %a0@(24),%a0
47dc0: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47dc4: 6718 beqs 47dde <_Objects_Get+0x52> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
47dc6: 4292 clrl %a2@
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47dc8: 246e fff8 moveal %fp@(-8),%a2
47dcc: 4e5e unlk %fp
47dce: 4e75 rts
/*
* Object Id is not within this API and Class on this node. So
* it may be global in a multiprocessing system. But it is clearly
* invalid on a single processor system.
*/
*location = OBJECTS_ERROR;
47dd0: 7001 moveq #1,%d0 <== NOT EXECUTED
47dd2: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47dd4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
47dd8: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
47dda: 4e5e unlk %fp <== NOT EXECUTED
47ddc: 4e75 rts <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
47dde: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
47de2: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
*location = OBJECTS_ERROR;
return NULL;
47de8: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
/*
* Valid Id for this API, Class and Node but the object has not
* been allocated yet.
*/
_Thread_Enable_dispatch();
*location = OBJECTS_ERROR;
47dec: 7201 moveq #1,%d1 <== NOT EXECUTED
47dee: 2481 movel %d1,%a2@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47df0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47df4: 4e5e unlk %fp <== NOT EXECUTED
00047cd0 <_Objects_Get_information>:
Objects_Information *_Objects_Get_information(
Objects_APIs the_api,
uint16_t the_class
)
{
47cd0: 4e56 0000 linkw %fp,#0
47cd4: 2f02 movel %d2,%sp@-
47cd6: 342e 000e movew %fp@(14),%d2
Objects_Information *info;
int the_class_api_maximum;
if ( !the_class )
47cda: 660a bnes 47ce6 <_Objects_Get_information+0x16> <== ALWAYS TAKEN
if ( the_class > (uint32_t) the_class_api_maximum )
return NULL;
if ( !_Objects_Information_table[ the_api ] )
return NULL;
47cdc: 4280 clrl %d0
if ( info->maximum == 0 )
return NULL;
#endif
return info;
}
47cde: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47ce2: 4e5e unlk %fp <== NOT EXECUTED
47ce4: 4e75 rts <== NOT EXECUTED
/*
* This call implicitly validates the_api so we do not call
* _Objects_Is_api_valid above here.
*/
the_class_api_maximum = _Objects_API_maximum_class( the_api );
47ce6: 2f2e 0008 movel %fp@(8),%sp@-
47cea: 4eb9 0004 be94 jsr 4be94 <_Objects_API_maximum_class>
if ( the_class_api_maximum == 0 )
47cf0: 588f addql #4,%sp
47cf2: 4a80 tstl %d0
47cf4: 67e6 beqs 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( the_class > (uint32_t) the_class_api_maximum )
47cf6: 0282 0000 ffff andil #65535,%d2
47cfc: b480 cmpl %d0,%d2
47cfe: 62dc bhis 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
if ( !_Objects_Information_table[ the_api ] )
47d00: 202e 0008 movel %fp@(8),%d0
47d04: 41f9 0005 e4f4 lea 5e4f4 <_Objects_Information_table>,%a0
47d0a: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0
47d0e: 4a88 tstl %a0
47d10: 67ca beqs 47cdc <_Objects_Get_information+0xc> <== NEVER TAKEN
return NULL;
info = _Objects_Information_table[ the_api ][ the_class ];
47d12: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0
if ( !info )
47d16: 67c6 beqs 47cde <_Objects_Get_information+0xe> <== NEVER TAKEN
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
return NULL;
47d18: 2040 moveal %d0,%a0
47d1a: 4a68 000e tstw %a0@(14)
47d1e: 56c1 sne %d1
#endif
return info;
}
47d20: 242e fffc movel %fp@(-4),%d2
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
return NULL;
47d24: 49c1 extbl %d1
#endif
return info;
}
47d26: 4e5e unlk %fp
* Thus we may have 0 local instances and still have a valid object
* pointer.
*/
#if !defined(RTEMS_MULTIPROCESSING)
if ( info->maximum == 0 )
return NULL;
47d28: c081 andl %d1,%d0 <== NOT EXECUTED
#endif
return info;
}
00047d2c <_Objects_Get_isr_disable>:
{
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d2c: 7001 moveq #1,%d0
_ISR_Disable( level );
47d2e: 223c 0000 0700 movel #1792,%d1
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d34: 4e56 0000 linkw %fp,#0
47d38: 206e 0008 moveal %fp@(8),%a0
Objects_Control *the_object;
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
47d3c: 90a8 0006 subl %a0@(6),%d0
47d40: d0ae 000c addl %fp@(12),%d0
Objects_Information *information,
Objects_Id id,
Objects_Locations *location,
ISR_Level *level_p
)
{
47d44: 2f02 movel %d2,%sp@-
47d46: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
ISR_Level level;
index = id - information->minimum_id + 1;
_ISR_Disable( level );
47d4a: 40c2 movew %sr,%d2
47d4c: 8282 orl %d2,%d1
47d4e: 46c1 movew %d1,%sr
if ( information->maximum >= index ) {
47d50: 4281 clrl %d1
47d52: 3228 000e movew %a0@(14),%d1
47d56: b280 cmpl %d0,%d1
47d58: 6518 bcss 47d72 <_Objects_Get_isr_disable+0x46> <== NEVER TAKEN
if ( (the_object = information->local_table[ index ]) != NULL ) {
47d5a: 2068 0018 moveal %a0@(24),%a0
47d5e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0
47d62: 671c beqs 47d80 <_Objects_Get_isr_disable+0x54> <== NEVER TAKEN
*location = OBJECTS_LOCAL;
*level_p = level;
47d64: 206e 0014 moveal %fp@(20),%a0
index = id - information->minimum_id + 1;
_ISR_Disable( level );
if ( information->maximum >= index ) {
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
47d68: 4291 clrl %a1@
*level_p = level;
47d6a: 2082 movel %d2,%a0@
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d6c: 241f movel %sp@+,%d2
47d6e: 4e5e unlk %fp
47d70: 4e75 rts
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
47d72: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47d74: 7201 moveq #1,%d1 <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
47d76: 4280 clrl %d0 <== NOT EXECUTED
#endif
}
47d78: 241f movel %sp@+,%d2 <== NOT EXECUTED
47d7a: 4e5e unlk %fp <== NOT EXECUTED
_ISR_Enable( level );
*location = OBJECTS_ERROR;
return NULL;
}
_ISR_Enable( level );
*location = OBJECTS_ERROR;
47d7c: 2281 movel %d1,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d7e: 4e75 rts <== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
*location = OBJECTS_LOCAL;
*level_p = level;
return the_object;
}
_ISR_Enable( level );
47d80: 46c2 movew %d2,%sr <== NOT EXECUTED
*location = OBJECTS_ERROR;
47d82: 7401 moveq #1,%d2 <== NOT EXECUTED
47d84: 2282 movel %d2,%a1@ <== NOT EXECUTED
_Objects_MP_Is_remote( information, id, location, &the_object );
return the_object;
#else
return NULL;
#endif
}
47d86: 241f movel %sp@+,%d2 <== NOT EXECUTED
47d88: 4e5e unlk %fp <== NOT EXECUTED
000497bc <_Objects_Get_name_as_string>:
char *_Objects_Get_name_as_string(
Objects_Id id,
size_t length,
char *name
)
{
497bc: 4e56 ffdc linkw %fp,#-36 <== NOT EXECUTED
497c0: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
497c4: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
497c8: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
char lname[5];
Objects_Control *the_object;
Objects_Locations location;
Objects_Id tmpId;
if ( length == 0 )
497cc: 4a83 tstl %d3 <== NOT EXECUTED
497ce: 660e bnes 497de <_Objects_Get_name_as_string+0x22><== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE:
/* not supported */
#endif
case OBJECTS_ERROR:
return NULL;
497d0: 4282 clrl %d2 <== NOT EXECUTED
_Thread_Enable_dispatch();
return name;
}
return NULL; /* unreachable path */
}
497d2: 2002 movel %d2,%d0 <== NOT EXECUTED
497d4: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED
497da: 4e5e unlk %fp <== NOT EXECUTED
497dc: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( length == 0 )
return NULL;
if ( name == NULL )
497de: 4a82 tstl %d2 <== NOT EXECUTED
497e0: 67f0 beqs 497d2 <_Objects_Get_name_as_string+0x16><== NOT EXECUTED
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
497e2: 4aae 0008 tstl %fp@(8) <== NOT EXECUTED
497e6: 6600 00ac bnew 49894 <_Objects_Get_name_as_string+0xd8><== NOT EXECUTED
497ea: 2079 0006 8cc0 moveal 68cc0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
497f0: 2828 0008 movel %a0@(8),%d4 <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
497f4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
497f6: 4eb9 0004 96d4 jsr 496d4 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
497fc: 588f addql #4,%sp <== NOT EXECUTED
497fe: 4a80 tstl %d0 <== NOT EXECUTED
49800: 67ce beqs 497d0 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
return NULL;
the_object = _Objects_Get( information, tmpId, &location );
49802: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49806: 2f04 movel %d4,%sp@- <== NOT EXECUTED
49808: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4980a: 4eb9 0004 98a8 jsr 498a8 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
49810: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49814: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
49818: 66b6 bnes 497d0 <_Objects_Get_name_as_string+0x14><== NOT EXECUTED
if ( information->is_string ) {
s = the_object->name.name_p;
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
4981a: 2040 moveal %d0,%a0 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
4981c: 7818 moveq #24,%d4 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4981e: 5383 subql #1,%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;
49820: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
lname[ 0 ] = (u32_name >> 24) & 0xff;
49824: 2001 movel %d1,%d0 <== NOT EXECUTED
49826: e8a8 lsrl %d4,%d0 <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
lname[ 2 ] = (u32_name >> 8) & 0xff;
49828: 2801 movel %d1,%d4 <== NOT EXECUTED
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
4982a: 2a01 movel %d1,%d5 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
4982c: e08c lsrl #8,%d4 <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
4982e: 1d41 fffa moveb %d1,%fp@(-6) <== NOT EXECUTED
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
lname[ 1 ] = (u32_name >> 16) & 0xff;
49832: 4245 clrw %d5 <== NOT EXECUTED
49834: 4845 swap %d5 <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
49836: 4201 clrb %d1 <== NOT EXECUTED
} else
#endif
{
uint32_t u32_name = (uint32_t) the_object->name.name_u32;
lname[ 0 ] = (u32_name >> 24) & 0xff;
49838: 1d40 fff7 moveb %d0,%fp@(-9) <== NOT EXECUTED
lname[ 1 ] = (u32_name >> 16) & 0xff;
4983c: 1d45 fff8 moveb %d5,%fp@(-8) <== NOT EXECUTED
lname[ 2 ] = (u32_name >> 8) & 0xff;
49840: 1d44 fff9 moveb %d4,%fp@(-7) <== NOT EXECUTED
lname[ 3 ] = (u32_name >> 0) & 0xff;
lname[ 4 ] = '\0';
49844: 1d41 fffb moveb %d1,%fp@(-5) <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49848: 4a83 tstl %d3 <== NOT EXECUTED
4984a: 6750 beqs 4989c <_Objects_Get_name_as_string+0xe0><== NOT EXECUTED
4984c: 4a00 tstb %d0 <== NOT EXECUTED
4984e: 674c beqs 4989c <_Objects_Get_name_as_string+0xe0><== NOT EXECUTED
49850: 47ee fff8 lea %fp@(-8),%a3 <== NOT EXECUTED
49854: 2242 moveal %d2,%a1 <== NOT EXECUTED
49856: 91c8 subal %a0,%a0 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
49858: 4281 clrl %d1 <== NOT EXECUTED
4985a: 1200 moveb %d0,%d1 <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4985c: 5288 addql #1,%a0 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
4985e: 2479 0005 f6dc moveal 5f6dc <__ctype_ptr__>,%a2 <== NOT EXECUTED
49864: 1232 1801 moveb %a2@(00000001,%d1:l),%d1 <== NOT EXECUTED
49868: 49c1 extbl %d1 <== NOT EXECUTED
4986a: 0281 0000 0097 andil #151,%d1 <== NOT EXECUTED
49870: 6602 bnes 49874 <_Objects_Get_name_as_string+0xb8><== NOT EXECUTED
49872: 702a moveq #42,%d0 <== NOT EXECUTED
49874: 12c0 moveb %d0,%a1@+ <== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
49876: 2449 moveal %a1,%a2 <== NOT EXECUTED
49878: b688 cmpl %a0,%d3 <== NOT EXECUTED
4987a: 6304 blss 49880 <_Objects_Get_name_as_string+0xc4><== NOT EXECUTED
4987c: 101b moveb %a3@+,%d0 <== NOT EXECUTED
4987e: 66d8 bnes 49858 <_Objects_Get_name_as_string+0x9c><== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
49880: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49882: 4eb9 0004 a3b6 jsr 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return name;
}
return NULL; /* unreachable path */
}
49888: 2002 movel %d2,%d0 <== NOT EXECUTED
4988a: 4cee 0c3c ffdc moveml %fp@(-36),%d2-%d5/%a2-%a3 <== NOT EXECUTED
49890: 4e5e unlk %fp <== NOT EXECUTED
49892: 4e75 rts <== NOT EXECUTED
return NULL;
if ( name == NULL )
return NULL;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
49894: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
49898: 6000 ff5a braw 497f4 <_Objects_Get_name_as_string+0x38><== NOT EXECUTED
s = lname;
}
d = name;
if ( s ) {
for ( i=0 ; i<(length-1) && *s ; i++, s++, d++ ) {
4989c: 2442 moveal %d2,%a2 <== NOT EXECUTED
*d = (isprint((unsigned char)*s)) ? *s : '*';
}
}
*d = '\0';
4989e: 4212 clrb %a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
498a0: 4eb9 0004 a3b6 jsr 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
498a6: 60e0 bras 49888 <_Objects_Get_name_as_string+0xcc><== NOT EXECUTED
00047f94 <_Objects_Get_next>:
Objects_Information *information,
Objects_Id id,
Objects_Locations *location_p,
Objects_Id *next_id_p
)
{
47f94: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47f98: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
47f9c: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
47fa0: 266e 0010 moveal %fp@(16),%a3 <== NOT EXECUTED
Objects_Control *object;
Objects_Id next_id;
if ( !information )
47fa4: 4a8a tstl %a2 <== NOT EXECUTED
47fa6: 660c bnes 47fb4 <_Objects_Get_next+0x20> <== NOT EXECUTED
if ( !location_p )
return NULL;
if ( !next_id_p )
return NULL;
47fa8: 4280 clrl %d0 <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47faa: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47fb0: 4e5e unlk %fp <== NOT EXECUTED
47fb2: 4e75 rts <== NOT EXECUTED
Objects_Id next_id;
if ( !information )
return NULL;
if ( !location_p )
47fb4: 4a8b tstl %a3 <== NOT EXECUTED
47fb6: 67f0 beqs 47fa8 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if ( !next_id_p )
47fb8: 4aae 0014 tstl %fp@(20) <== NOT EXECUTED
47fbc: 67ea beqs 47fa8 <_Objects_Get_next+0x14> <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
47fbe: 302e 000e movew %fp@(14),%d0 <== NOT EXECUTED
47fc2: 663a bnes 47ffe <_Objects_Get_next+0x6a> <== NOT EXECUTED
next_id = information->minimum_id;
47fc4: 242a 0006 movel %a2@(6),%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47fc8: 49f9 0004 8024 lea 48024 <_Objects_Get>,%a4 <== NOT EXECUTED
else
next_id = id;
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
47fce: 4281 clrl %d1 <== NOT EXECUTED
47fd0: 4280 clrl %d0 <== NOT EXECUTED
47fd2: 322a 000e movew %a2@(14),%d1 <== NOT EXECUTED
47fd6: 3002 movew %d2,%d0 <== NOT EXECUTED
47fd8: b081 cmpl %d1,%d0 <== NOT EXECUTED
47fda: 622e bhis 4800a <_Objects_Get_next+0x76> <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47fdc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
47fde: 2f02 movel %d2,%sp@- <== NOT EXECUTED
next_id++;
47fe0: 5282 addql #1,%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
47fe2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47fe4: 4e94 jsr %a4@ <== NOT EXECUTED
next_id++;
} while (*location_p != OBJECTS_LOCAL);
47fe6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47fea: 4a93 tstl %a3@ <== NOT EXECUTED
47fec: 66e0 bnes 47fce <_Objects_Get_next+0x3a> <== NOT EXECUTED
*next_id_p = next_id;
47fee: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
47ff2: 2082 movel %d2,%a0@ <== NOT EXECUTED
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
return 0;
}
47ff4: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
47ffa: 4e5e unlk %fp <== NOT EXECUTED
47ffc: 4e75 rts <== NOT EXECUTED
return NULL;
if (_Objects_Get_index(id) == OBJECTS_ID_INITIAL_INDEX)
next_id = information->minimum_id;
else
next_id = id;
47ffe: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
*location_p = OBJECTS_ERROR;
goto final;
}
/* try to grab one */
object = _Objects_Get(information, next_id, location_p);
48002: 49f9 0004 8024 lea 48024 <_Objects_Get>,%a4 <== NOT EXECUTED
48008: 60c4 bras 47fce <_Objects_Get_next+0x3a> <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
4800a: 7401 moveq #1,%d2 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
4800c: 72ff moveq #-1,%d1 <== NOT EXECUTED
return 0;
4800e: 4280 clrl %d0 <== NOT EXECUTED
do {
/* walked off end of list? */
if (_Objects_Get_index(next_id) > information->maximum)
{
*location_p = OBJECTS_ERROR;
48010: 2682 movel %d2,%a3@ <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
48012: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
return 0;
}
48016: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
*next_id_p = next_id;
return object;
final:
*next_id_p = OBJECTS_ID_FINAL;
4801c: 2081 movel %d1,%a0@ <== NOT EXECUTED
return 0;
}
4801e: 4e5e unlk %fp <== NOT EXECUTED
...
0005b810 <_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;
5b810: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b812: 4281 clrl %d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b814: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5b818: 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;
5b81c: 90a8 0006 subl %a0@(6),%d0 <== NOT EXECUTED
5b820: d0ae 000c addl %fp@(12),%d0 <== NOT EXECUTED
if ( information->maximum >= index ) {
5b824: 3228 000e movew %a0@(14),%d1 <== NOT EXECUTED
Objects_Control *_Objects_Get_no_protection(
Objects_Information *information,
Objects_Id id,
Objects_Locations *location
)
{
5b828: 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 ) {
5b82c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5b82e: 6510 bcss 5b840 <_Objects_Get_no_protection+0x30><== NOT EXECUTED
if ( (the_object = information->local_table[ index ]) != NULL ) {
5b830: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
5b834: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
5b838: 6706 beqs 5b840 <_Objects_Get_no_protection+0x30><== NOT EXECUTED
*location = OBJECTS_LOCAL;
5b83a: 4291 clrl %a1@ <== NOT EXECUTED
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
return NULL;
}
5b83c: 4e5e unlk %fp <== NOT EXECUTED
5b83e: 4e75 rts <== NOT EXECUTED
/*
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
5b840: 7001 moveq #1,%d0 <== NOT EXECUTED
return NULL;
}
5b842: 4e5e unlk %fp <== NOT EXECUTED
/*
* This isn't supported or required yet for Global objects so
* if it isn't local, we don't find it.
*/
*location = OBJECTS_ERROR;
5b844: 2280 movel %d0,%a1@ <== NOT EXECUTED
return NULL;
5b846: 4280 clrl %d0 <== NOT EXECUTED
}
...
000494e8 <_Objects_Id_to_name>:
*/
Objects_Name_or_id_lookup_errors _Objects_Id_to_name (
Objects_Id id,
Objects_Name *name
)
{
494e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
494ec: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
494f0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Caller is trusted for name != NULL.
*/
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
494f2: 4a81 tstl %d1 <== NOT EXECUTED
494f4: 660a bnes 49500 <_Objects_Id_to_name+0x18> <== NOT EXECUTED
494f6: 2079 0006 03e0 moveal 603e0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
494fc: 2228 0008 movel %a0@(8),%d1 <== NOT EXECUTED
49500: 7418 moveq #24,%d2 <== NOT EXECUTED
49502: 2001 movel %d1,%d0 <== NOT EXECUTED
49504: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
49506: 143c 0007 moveb #7,%d2 <== NOT EXECUTED
4950a: c082 andl %d2,%d0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
4950c: 143c 0002 moveb #2,%d2 <== NOT EXECUTED
49510: 2040 moveal %d0,%a0 <== NOT EXECUTED
49512: 5388 subql #1,%a0 <== NOT EXECUTED
49514: b488 cmpl %a0,%d2 <== NOT EXECUTED
49516: 654a bcss 49562 <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
the_api = _Objects_Get_API( tmpId );
if ( !_Objects_Is_api_valid( the_api ) )
return OBJECTS_INVALID_ID;
if ( !_Objects_Information_table[ the_api ] )
49518: 41f9 0006 01dc lea 601dc <_Objects_Information_table>,%a0 <== NOT EXECUTED
4951e: 2070 0c00 moveal %a0@(00000000,%d0:l:4),%a0 <== NOT EXECUTED
49522: 4a88 tstl %a0 <== NOT EXECUTED
49524: 673c beqs 49562 <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
49526: 2001 movel %d1,%d0 <== NOT EXECUTED
49528: 741b moveq #27,%d2 <== NOT EXECUTED
4952a: e4a8 lsrl %d2,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
the_class = _Objects_Get_class( tmpId );
information = _Objects_Information_table[ the_api ][ the_class ];
4952c: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
if ( !information )
49530: 6730 beqs 49562 <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)
if ( information->is_string )
return OBJECTS_INVALID_ID;
#endif
the_object = _Objects_Get( information, tmpId, &ignored_location );
49532: 486e fffc pea %fp@(-4) <== NOT EXECUTED
49536: 2f01 movel %d1,%sp@- <== NOT EXECUTED
49538: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4953a: 4eb9 0004 947c jsr 4947c <_Objects_Get> <== NOT EXECUTED
if ( !the_object )
49540: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
49544: 4a80 tstl %d0 <== NOT EXECUTED
49546: 671a beqs 49562 <_Objects_Id_to_name+0x7a> <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
49548: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4954c: 2240 moveal %d0,%a1 <== NOT EXECUTED
4954e: 20a9 000c movel %a1@(12),%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
49552: 4eb9 0004 a08e jsr 4a08e <_Thread_Enable_dispatch> <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49558: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( !the_object )
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
4955c: 4280 clrl %d0 <== NOT EXECUTED
}
4955e: 4e5e unlk %fp <== NOT EXECUTED
49560: 4e75 rts <== NOT EXECUTED
49562: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_api = _Objects_Get_API( tmpId );
if ( !_Objects_Is_api_valid( the_api ) )
return OBJECTS_INVALID_ID;
if ( !_Objects_Information_table[ the_api ] )
return OBJECTS_INVALID_ID;
49566: 7003 moveq #3,%d0 <== NOT EXECUTED
return OBJECTS_INVALID_ID;
*name = the_object->name;
_Thread_Enable_dispatch();
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
}
49568: 4e5e unlk %fp <== NOT EXECUTED
00047df8 <_Objects_Initialize_information>:
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47df8: 4e56 ffec linkw %fp,#-20
47dfc: 202e 000c movel %fp@(12),%d0
47e00: 48d7 043c moveml %d2-%d5/%a2,%sp@
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47e04: 45f9 0005 e4f4 lea 5e4f4 <_Objects_Information_table>,%a2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47e0a: 4282 clrl %d2
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47e0c: 4283 clrl %d3
47e0e: 2472 0c00 moveal %a2@(00000000,%d0:l:4),%a2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47e12: 206e 0008 moveal %fp@(8),%a0
47e16: 342e 001a movew %fp@(26),%d2
47e1a: 226e 0010 moveal %fp@(16),%a1
uint32_t index;
#endif
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
47e1e: 2142 0014 movel %d2,%a0@(20)
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47e22: 222e 0014 movel %fp@(20),%d1
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
information->inactive = 0;
47e26: 4242 clrw %d2
,
bool supports_global,
Objects_Thread_queue_Extract_callout extract
#endif
)
{
47e28: 282e 0020 movel %fp@(32),%d4
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
information->inactive = 0;
47e2c: 3142 0028 movew %d2,%a0@(40)
/*
* Set the maximum value to 0. It will be updated when objects are
* added to the inactive set from _Objects_Extend_information()
*/
information->maximum = 0;
47e30: 3142 000e movew %d2,%a0@(14)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
(maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
47e34: 2401 movel %d1,%d2
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47e36: 3609 movew %a1,%d3
uint32_t maximum_per_allocation;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t index;
#endif
information->the_api = the_api;
47e38: 2080 movel %d0,%a0@
information->the_class = the_class;
47e3a: 3149 0004 movew %a1,%a0@(4)
information->size = size;
information->local_table = 0;
47e3e: 42a8 0018 clrl %a0@(24)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
(maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
47e42: d482 addl %d2,%d2
47e44: 9582 subxl %d2,%d2
47e46: 4482 negl %d2
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
47e48: 42a8 002a clrl %a0@(42)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
(maximum & OBJECTS_UNLIMITED_OBJECTS) ? true : false;
maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;
47e4c: 0881 001f bclr #31,%d1
information->the_api = the_api;
information->the_class = the_class;
information->size = size;
information->local_table = 0;
information->inactive_per_block = 0;
information->object_blocks = 0;
47e50: 42a8 002e clrl %a0@(46)
information->maximum = 0;
/*
* Register this Object Class in the Object Information Table.
*/
_Objects_Information_table[ the_api ][ the_class ] = information;
47e54: 2588 3c00 movel %a0,%a2@(00000000,%d3:l:4)
/*
* Are we operating in limited or unlimited (e.g. auto-extend) mode.
*/
information->auto_extend =
47e58: 1142 0010 moveb %d2,%a0@(16)
maximum_per_allocation = maximum & ~OBJECTS_UNLIMITED_OBJECTS;
/*
* Unlimited and maximum of zero is illogical.
*/
if ( information->auto_extend && maximum_per_allocation == 0) {
47e5c: 4a82 tstl %d2
47e5e: 6706 beqs 47e66 <_Objects_Initialize_information+0x6e>
47e60: 4a81 tstl %d1
47e62: 6700 0092 beqw 47ef6 <_Objects_Initialize_information+0xfe>
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e66: 7a18 moveq #24,%d5
information->local_table = &null_local_table;
/*
* Calculate minimum and maximum Id's
*/
minimum_index = (maximum_per_allocation == 0) ? 0 : 1;
47e68: 4a81 tstl %d1
47e6a: 56c2 sne %d2
47e6c: eba8 lsll %d5,%d0
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e6e: 1a3c 001b moveb #27,%d5
47e72: 49c2 extbl %d2
47e74: 4482 negl %d2
information->allocation_size = maximum_per_allocation;
/*
* Provide a null local table entry for the case of any empty table.
*/
information->local_table = &null_local_table;
47e76: 43f9 0005 dcf4 lea 5dcf4 <null_local_table.3204>,%a1
47e7c: ebab lsll %d5,%d3
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e7e: 08c0 0010 bset #16,%d0
/*
* Calculate the maximum name length
*/
name_length = maximum_name_length;
if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )
47e82: 1a3c 0003 moveb #3,%d5
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e86: 8083 orl %d3,%d0
47e88: ca84 andl %d4,%d5
}
/*
* The allocation unit is the maximum value
*/
information->allocation_size = maximum_per_allocation;
47e8a: 3141 0012 movew %d1,%a0@(18)
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e8e: 8082 orl %d2,%d0
/*
* Provide a null local table entry for the case of any empty table.
*/
information->local_table = &null_local_table;
47e90: 2149 0018 movel %a1,%a0@(24)
47e94: 2140 0006 movel %d0,%a0@(6)
/*
* Calculate the maximum name length
*/
name_length = maximum_name_length;
if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )
47e98: 4a85 tstl %d5
47e9a: 6626 bnes 47ec2 <_Objects_Initialize_information+0xca><== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
47e9c: 43e8 0020 lea %a0@(32),%a1
47ea0: 2149 001c movel %a1,%a0@(28)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47ea4: 43e8 001c lea %a0@(28),%a1
name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &
~(OBJECTS_NAME_ALIGNMENT-1);
information->name_length = name_length;
47ea8: 3144 0032 movew %d4,%a0@(50)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
47eac: 42a8 0020 clrl %a0@(32)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47eb0: 2149 0024 movel %a1,%a0@(36)
_Chain_Initialize_empty( &information->Inactive );
/*
* Initialize objects .. if there are any
*/
if ( maximum_per_allocation ) {
47eb4: 4a81 tstl %d1
47eb6: 662c bnes 47ee4 <_Objects_Initialize_information+0xec>
_Chain_Initialize_empty( &information->global_table[ index ] );
}
else
information->global_table = NULL;
#endif
}
47eb8: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
47ebe: 4e5e unlk %fp
47ec0: 4e75 rts
* Calculate the maximum name length
*/
name_length = maximum_name_length;
if ( name_length & (OBJECTS_NAME_ALIGNMENT-1) )
name_length = (name_length + OBJECTS_NAME_ALIGNMENT) &
47ec2: 5884 addql #4,%d4 <== NOT EXECUTED
47ec4: 70fc moveq #-4,%d0 <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
47ec6: 43e8 0020 lea %a0@(32),%a1 <== NOT EXECUTED
47eca: c880 andl %d0,%d4 <== NOT EXECUTED
47ecc: 2149 001c movel %a1,%a0@(28) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47ed0: 43e8 001c lea %a0@(28),%a1 <== NOT EXECUTED
~(OBJECTS_NAME_ALIGNMENT-1);
information->name_length = name_length;
47ed4: 3144 0032 movew %d4,%a0@(50) <== NOT EXECUTED
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
47ed8: 42a8 0020 clrl %a0@(32) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
47edc: 2149 0024 movel %a1,%a0@(36) <== NOT EXECUTED
_Chain_Initialize_empty( &information->Inactive );
/*
* Initialize objects .. if there are any
*/
if ( maximum_per_allocation ) {
47ee0: 4a81 tstl %d1 <== NOT EXECUTED
47ee2: 67d4 beqs 47eb8 <_Objects_Initialize_information+0xc0><== NOT EXECUTED
/*
* Always have the maximum size available so the current performance
* figures are create are met. If the user moves past the maximum
* number then a performance hit is taken.
*/
_Objects_Extend_information( information );
47ee4: 2d48 0008 movel %a0,%fp@(8)
_Chain_Initialize_empty( &information->global_table[ index ] );
}
else
information->global_table = NULL;
#endif
}
47ee8: 4cee 043c ffec moveml %fp@(-20),%d2-%d5/%a2
47eee: 4e5e unlk %fp
/*
* Always have the maximum size available so the current performance
* figures are create are met. If the user moves past the maximum
* number then a performance hit is taken.
*/
_Objects_Extend_information( information );
47ef0: 4ef9 0004 7988 jmp 47988 <_Objects_Extend_information>
/*
* Unlimited and maximum of zero is illogical.
*/
if ( information->auto_extend && maximum_per_allocation == 0) {
_Internal_error_Occurred(
47ef6: 4878 0013 pea 13 <INVALID_OPERATION+0x3>
47efa: 4878 0001 pea 1 <ADD>
47efe: 42a7 clrl %sp@-
47f00: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
00047f18 <_Objects_Name_to_id_u32>:
Objects_Information *information,
uint32_t name,
uint32_t node,
Objects_Id *id
)
{
47f18: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
47f1c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47f20: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
47f24: 222e 000c movel %fp@(12),%d1 <== NOT EXECUTED
47f28: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
47f2c: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
Objects_Name name_for_mp;
#endif
/* ASSERT: information->is_string == false */
if ( !id )
47f30: 4a8a tstl %a2 <== NOT EXECUTED
47f32: 6758 beqs 47f8c <_Objects_Name_to_id_u32+0x74> <== NOT EXECUTED
return OBJECTS_INVALID_ADDRESS;
if ( name == 0 )
47f34: 4a81 tstl %d1 <== NOT EXECUTED
47f36: 6718 beqs 47f50 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
search_local_node = false;
if ( information->maximum != 0 &&
47f38: 3428 000e movew %a0@(14),%d2 <== NOT EXECUTED
47f3c: 6712 beqs 47f50 <_Objects_Name_to_id_u32+0x38> <== NOT EXECUTED
47f3e: 4a80 tstl %d0 <== NOT EXECUTED
47f40: 6718 beqs 47f5a <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
(node == OBJECTS_SEARCH_ALL_NODES ||
47f42: 0c80 7fff ffff cmpil #2147483647,%d0 <== NOT EXECUTED
47f48: 6710 beqs 47f5a <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
node == OBJECTS_SEARCH_LOCAL_NODE ||
47f4a: 7601 moveq #1,%d3 <== NOT EXECUTED
47f4c: b680 cmpl %d0,%d3 <== NOT EXECUTED
47f4e: 670a beqs 47f5a <_Objects_Name_to_id_u32+0x42> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
return OBJECTS_INVALID_NAME;
47f50: 7001 moveq #1,%d0 <== NOT EXECUTED
#endif
}
47f52: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47f56: 4e5e unlk %fp <== NOT EXECUTED
47f58: 4e75 rts <== NOT EXECUTED
* id - object id
* OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
Objects_Name_or_id_lookup_errors _Objects_Name_to_id_u32(
47f5a: 2268 0018 moveal %a0@(24),%a1 <== NOT EXECUTED
47f5e: 7001 moveq #1,%d0 <== NOT EXECUTED
47f60: 5889 addql #4,%a1 <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
47f62: 0282 0000 ffff andil #65535,%d2 <== NOT EXECUTED
the_object = information->local_table[ index ];
47f68: 2059 moveal %a1@+,%a0 <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
47f6a: 5280 addql #1,%d0 <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
47f6c: 4a88 tstl %a0 <== NOT EXECUTED
47f6e: 6706 beqs 47f76 <_Objects_Name_to_id_u32+0x5e> <== NOT EXECUTED
continue;
if ( name == the_object->name.name_u32 ) {
47f70: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED
47f74: 6708 beqs 47f7e <_Objects_Name_to_id_u32+0x66> <== NOT EXECUTED
_Objects_Is_local_node( node )
))
search_local_node = true;
if ( search_local_node ) {
for ( index = 1; index <= information->maximum; index++ ) {
47f76: b082 cmpl %d2,%d0 <== NOT EXECUTED
47f78: 63ee blss 47f68 <_Objects_Name_to_id_u32+0x50> <== NOT EXECUTED
return OBJECTS_INVALID_NAME;
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
return OBJECTS_INVALID_NAME;
47f7a: 7001 moveq #1,%d0 <== NOT EXECUTED
47f7c: 60d4 bras 47f52 <_Objects_Name_to_id_u32+0x3a> <== NOT EXECUTED
the_object = information->local_table[ index ];
if ( !the_object )
continue;
if ( name == the_object->name.name_u32 ) {
*id = the_object->id;
47f7e: 24a8 0008 movel %a0@(8),%a2@ <== NOT EXECUTED
return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;
47f82: 4280 clrl %d0 <== NOT EXECUTED
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
return OBJECTS_INVALID_NAME;
#endif
}
47f84: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47f88: 4e5e unlk %fp <== NOT EXECUTED
47f8a: 4e75 rts <== NOT EXECUTED
#endif
/* ASSERT: information->is_string == false */
if ( !id )
return OBJECTS_INVALID_ADDRESS;
47f8c: 7002 moveq #2,%d0 <== NOT EXECUTED
name_for_mp.name_u32 = name;
return _Objects_MP_Global_name_search( information, name_for_mp, node, id );
#else
return OBJECTS_INVALID_NAME;
#endif
}
47f8e: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
47f92: 4e5e unlk %fp <== NOT EXECUTED
...
0004a038 <_Objects_Set_name>:
{
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4a038: 4280 clrl %d0 <== NOT EXECUTED
bool _Objects_Set_name(
Objects_Information *information,
Objects_Control *the_object,
const char *name
)
{
4a03a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a03e: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4a042: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a044: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
4a048: 2f02 movel %d2,%sp@- <== NOT EXECUTED
size_t length;
const char *s;
s = name;
length = strnlen( name, information->name_length );
4a04a: 3028 0032 movew %a0@(50),%d0 <== NOT EXECUTED
4a04e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4a050: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4a052: 4eb9 0005 0e50 jsr 50e50 <strnlen> <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a058: 508f addql #8,%sp <== NOT EXECUTED
4a05a: 7218 moveq #24,%d1 <== NOT EXECUTED
4a05c: 1412 moveb %a2@,%d2 <== NOT EXECUTED
4a05e: 49c2 extbl %d2 <== NOT EXECUTED
4a060: e3aa lsll %d1,%d2 <== NOT EXECUTED
4a062: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
4a066: b280 cmpl %d0,%d1 <== NOT EXECUTED
4a068: 6440 bccs 4a0aa <_Objects_Set_name+0x72> <== NOT EXECUTED
4a06a: 122a 0001 moveb %a2@(1),%d1 <== NOT EXECUTED
4a06e: 49c1 extbl %d1 <== NOT EXECUTED
4a070: 4841 swap %d1 <== NOT EXECUTED
4a072: 4241 clrw %d1 <== NOT EXECUTED
4a074: 8282 orl %d2,%d1 <== NOT EXECUTED
4a076: 7402 moveq #2,%d2 <== NOT EXECUTED
4a078: b480 cmpl %d0,%d2 <== NOT EXECUTED
4a07a: 6734 beqs 4a0b0 <_Objects_Set_name+0x78> <== NOT EXECUTED
4a07c: 142a 0002 moveb %a2@(2),%d2 <== NOT EXECUTED
4a080: 49c2 extbl %d2 <== NOT EXECUTED
4a082: e18a lsll #8,%d2 <== NOT EXECUTED
4a084: 8282 orl %d2,%d1 <== NOT EXECUTED
4a086: 7403 moveq #3,%d2 <== NOT EXECUTED
4a088: b480 cmpl %d0,%d2 <== NOT EXECUTED
4a08a: 6742 beqs 4a0ce <_Objects_Set_name+0x96> <== NOT EXECUTED
4a08c: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4a090: 102a 0003 moveb %a2@(3),%d0 <== NOT EXECUTED
4a094: 49c0 extbl %d0 <== NOT EXECUTED
4a096: 8280 orl %d0,%d1 <== NOT EXECUTED
);
}
return true;
}
4a098: 7001 moveq #1,%d0 <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a09a: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
);
}
return true;
}
4a09e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a0a2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a0a6: 4e5e unlk %fp <== NOT EXECUTED
4a0a8: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a0aa: 2202 movel %d2,%d1 <== NOT EXECUTED
4a0ac: 08c1 0015 bset #21,%d1 <== NOT EXECUTED
4a0b0: 7020 moveq #32,%d0 <== NOT EXECUTED
4a0b2: 08c1 000d bset #13,%d1 <== NOT EXECUTED
4a0b6: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4a0ba: 8280 orl %d0,%d1 <== NOT EXECUTED
);
}
return true;
}
4a0bc: 7001 moveq #1,%d0 <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a0be: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
);
}
return true;
}
4a0c2: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a0c6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a0ca: 4e5e unlk %fp <== NOT EXECUTED
4a0cc: 4e75 rts <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a0ce: 7020 moveq #32,%d0 <== NOT EXECUTED
4a0d0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4a0d4: 8280 orl %d0,%d1 <== NOT EXECUTED
);
}
return true;
}
4a0d6: 7001 moveq #1,%d0 <== NOT EXECUTED
d[length] = '\0';
the_object->name.name_p = d;
} else
#endif
{
the_object->name.name_u32 = _Objects_Build_name(
4a0d8: 2141 000c movel %d1,%a0@(12) <== NOT EXECUTED
);
}
return true;
}
4a0dc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a0e0: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a0e4: 4e5e unlk %fp <== NOT EXECUTED
00047f98 <_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) /
47f98: 4281 clrl %d1 <== NOT EXECUTED
*/
void _Objects_Shrink_information(
Objects_Information *information
)
{
47f9a: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
47f9e: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
47fa2: 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 );
47fa6: 4283 clrl %d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
47fa8: 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 );
47faa: 362a 0008 movew %a2@(8),%d3 <== NOT EXECUTED
block_count = (information->maximum - index_base) /
47fae: 382a 000e movew %a2@(14),%d4 <== NOT EXECUTED
47fb2: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
47fb6: 9883 subl %d3,%d4 <== NOT EXECUTED
47fb8: 4c41 4004 remul %d1,%d4,%d4 <== NOT EXECUTED
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
47fbc: 6774 beqs 48032 <_Objects_Shrink_information+0x9a><== NOT EXECUTED
if ( information->inactive_per_block[ block ] ==
47fbe: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
47fc2: b290 cmpl %a0@,%d1 <== NOT EXECUTED
47fc4: 677e beqs 48044 <_Objects_Shrink_information+0xac><== NOT EXECUTED
* the_block - the block to remove
*
* Output parameters: NONE
*/
void _Objects_Shrink_information(
47fc6: 5888 addql #4,%a0 <== NOT EXECUTED
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
47fc8: 4280 clrl %d0 <== NOT EXECUTED
47fca: 5280 addql #1,%d0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
47fcc: d681 addl %d1,%d3 <== NOT EXECUTED
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
47fce: b084 cmpl %d4,%d0 <== NOT EXECUTED
47fd0: 6460 bccs 48032 <_Objects_Shrink_information+0x9a><== NOT EXECUTED
information->inactive -= information->allocation_size;
return;
}
index_base += information->allocation_size;
47fd2: 2400 movel %d0,%d2 <== NOT EXECUTED
47fd4: e58a lsll #2,%d2 <== NOT EXECUTED
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
if ( information->inactive_per_block[ block ] ==
47fd6: b298 cmpl %a0@+,%d1 <== NOT EXECUTED
47fd8: 66f0 bnes 47fca <_Objects_Shrink_information+0x32><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
47fda: 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 );
47fde: 47f9 0004 6ed0 lea 46ed0 <_Chain_Extract>,%a3 <== NOT EXECUTED
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
do {
index = _Objects_Get_index( the_object->id );
47fe4: 4280 clrl %d0 <== NOT EXECUTED
47fe6: 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;
47fea: 2810 movel %a0@,%d4 <== NOT EXECUTED
if ((index >= index_base) &&
47fec: b680 cmpl %d0,%d3 <== NOT EXECUTED
47fee: 620c bhis 47ffc <_Objects_Shrink_information+0x64><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
47ff0: 4281 clrl %d1 <== NOT EXECUTED
47ff2: 322a 0012 movew %a2@(18),%d1 <== NOT EXECUTED
47ff6: 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) &&
47ff8: b280 cmpl %d0,%d1 <== NOT EXECUTED
47ffa: 6240 bhis 4803c <_Objects_Shrink_information+0xa4><== NOT EXECUTED
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
}
}
while ( the_object );
47ffc: 4a84 tstl %d4 <== NOT EXECUTED
47ffe: 6704 beqs 48004 <_Objects_Shrink_information+0x6c><== NOT EXECUTED
index = _Objects_Get_index( the_object->id );
/*
* Get the next node before the node is extracted
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
48000: 2044 moveal %d4,%a0 <== NOT EXECUTED
48002: 60e0 bras 47fe4 <_Objects_Shrink_information+0x4c><== NOT EXECUTED
while ( the_object );
/*
* Free the memory and reset the structures in the object' information
*/
_Workspace_Free( information->object_blocks[ block ] );
48004: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
48008: 2f30 2800 movel %a0@(00000000,%d2:l),%sp@- <== NOT EXECUTED
4800c: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
information->object_blocks[ block ] = NULL;
48012: 206a 002e moveal %a2@(46),%a0 <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
information->inactive -= information->allocation_size;
return;
48016: 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;
48018: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive_per_block[ block ] = 0;
4801c: 206a 002a moveal %a2@(42),%a0 <== NOT EXECUTED
information->inactive -= information->allocation_size;
48020: 302a 0028 movew %a2@(40),%d0 <== NOT EXECUTED
48024: 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;
48028: 42b0 2800 clrl %a0@(00000000,%d2:l) <== NOT EXECUTED
information->inactive -= information->allocation_size;
4802c: 9081 subl %d1,%d0 <== NOT EXECUTED
4802e: 3540 0028 movew %d0,%a2@(40) <== NOT EXECUTED
return;
}
index_base += information->allocation_size;
}
}
48032: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3 <== NOT EXECUTED
48038: 4e5e unlk %fp <== NOT EXECUTED
4803a: 4e75 rts <== NOT EXECUTED
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
4803c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4803e: 4e93 jsr %a3@ <== NOT EXECUTED
48040: 588f addql #4,%sp <== NOT EXECUTED
48042: 60b8 bras 47ffc <_Objects_Shrink_information+0x64><== NOT EXECUTED
information->allocation_size ) {
/*
* Assume the Inactive chain is never empty at this point
*/
the_object = (Objects_Control *) _Chain_First( &information->Inactive );
48044: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
index_base = _Objects_Get_index( information->minimum_id );
block_count = (information->maximum - index_base) /
information->allocation_size;
for ( block = 0; block < block_count; block++ ) {
if ( information->inactive_per_block[ block ] ==
48048: 4282 clrl %d2 <== NOT EXECUTED
*/
extract_me = the_object;
the_object = (Objects_Control *) the_object->Node.next;
if ((index >= index_base) &&
(index < (index_base + information->allocation_size))) {
_Chain_Extract( &extract_me->Node );
4804a: 47f9 0004 6ed0 lea 46ed0 <_Chain_Extract>,%a3 <== NOT EXECUTED
48050: 6092 bras 47fe4 <_Objects_Shrink_information+0x4c><== NOT EXECUTED
...
00048360 <_Protected_heap_Extend>:
bool _Protected_heap_Extend(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
48360: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
bool extend_ok;
uintptr_t amount_extended;
_RTEMS_Lock_allocator();
48364: 2f39 0005 ecd4 movel 5ecd4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4836a: 4eb9 0004 7150 jsr 47150 <_API_Mutex_Lock> <== NOT EXECUTED
extend_ok = _Heap_Extend(the_heap, starting_address, size, &amount_extended);
48370: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48374: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
48378: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4837c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48380: 4eb9 0004 c044 jsr 4c044 <_Heap_Extend> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
48386: 2f39 0005 ecd4 movel 5ecd4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4838c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
48390: 4eb9 0004 71b0 jsr 471b0 <_API_Mutex_Unlock> <== NOT EXECUTED
return extend_ok;
}
48396: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4839a: 4e5e unlk %fp <== NOT EXECUTED
...
0004cf50 <_Protected_heap_Get_free_information>:
bool _Protected_heap_Get_free_information(
Heap_Control *the_heap,
Heap_Information *info
)
{
4cf50: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
/*
* TBD: _Heap_Get_free_information does not error check or return status.
*/
_RTEMS_Lock_allocator();
4cf54: 2f39 0006 4a24 movel 64a24 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4cf5a: 4eb9 0004 b26c jsr 4b26c <_API_Mutex_Lock> <== NOT EXECUTED
_Heap_Get_free_information( the_heap, info );
4cf60: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4cf64: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4cf68: 4eb9 0005 0e6c jsr 50e6c <_Heap_Get_free_information> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4cf6e: 2f39 0006 4a24 movel 64a24 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4cf74: 4eb9 0004 b2cc jsr 4b2cc <_API_Mutex_Unlock> <== NOT EXECUTED
return true;
}
4cf7a: 7001 moveq #1,%d0 <== NOT EXECUTED
4cf7c: 4e5e unlk %fp <== NOT EXECUTED
00048848 <_Protected_heap_Get_information>:
bool _Protected_heap_Get_information(
Heap_Control *the_heap,
Heap_Information_block *the_info
)
{
48848: 4e56 0000 linkw %fp,#0
4884c: 2f03 movel %d3,%sp@-
4884e: 262e 000c movel %fp@(12),%d3
48852: 2f02 movel %d2,%sp@-
48854: 242e 0008 movel %fp@(8),%d2
if ( !the_heap )
48858: 6738 beqs 48892 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
if ( !the_info )
4885a: 4a83 tstl %d3
4885c: 6734 beqs 48892 <_Protected_heap_Get_information+0x4a><== NEVER TAKEN
return false;
_RTEMS_Lock_allocator();
4885e: 2f39 0005 f098 movel 5f098 <_RTEMS_Allocator_Mutex>,%sp@-
48864: 4eb9 0004 7600 jsr 47600 <_API_Mutex_Lock>
_Heap_Get_information( the_heap, the_info );
4886a: 2f03 movel %d3,%sp@-
4886c: 2f02 movel %d2,%sp@-
4886e: 4eb9 0004 c98c jsr 4c98c <_Heap_Get_information>
_RTEMS_Unlock_allocator();
48874: 2f39 0005 f098 movel 5f098 <_RTEMS_Allocator_Mutex>,%sp@-
4887a: 4eb9 0004 7660 jsr 47660 <_API_Mutex_Unlock>
return true;
}
48880: 242e fff8 movel %fp@(-8),%d2
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
48884: 4fef 0010 lea %sp@(16),%sp
}
48888: 262e fffc movel %fp@(-4),%d3
4888c: 4e5e unlk %fp
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
4888e: 7001 moveq #1,%d0
}
48890: 4e75 rts
48892: 242e fff8 movel %fp@(-8),%d2
48896: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4889a: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !the_heap )
return false;
if ( !the_info )
return false;
4889c: 4200 clrb %d0 <== NOT EXECUTED
_RTEMS_Lock_allocator();
_Heap_Get_information( the_heap, the_info );
_RTEMS_Unlock_allocator();
return true;
}
0005b154 <_Protected_heap_Resize_block>:
bool _Protected_heap_Resize_block(
Heap_Control *the_heap,
void *starting_address,
uintptr_t size
)
{
5b154: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
5b158: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Heap_Resize_status status;
uintptr_t old_mem_size;
uintptr_t avail_mem_size;
_RTEMS_Lock_allocator();
5b15a: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5b160: 4eb9 0004 6e04 jsr 46e04 <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Resize_block(
5b166: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
5b16a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5b16e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5b172: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5b176: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5b17a: 4eb9 0005 b1a0 jsr 5b1a0 <_Heap_Resize_block> <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5b180: 2f39 0005 e5f8 movel 5e5f8 <_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(
5b186: 2400 movel %d0,%d2 <== NOT EXECUTED
the_heap, starting_address, size, &old_mem_size, &avail_mem_size );
_RTEMS_Unlock_allocator();
5b188: 4eb9 0004 6e64 jsr 46e64 <_API_Mutex_Unlock> <== NOT EXECUTED
return (status == HEAP_RESIZE_SUCCESSFUL);
5b18e: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
5b192: 4a82 tstl %d2 <== NOT EXECUTED
5b194: 57c0 seq %d0 <== NOT EXECUTED
}
5b196: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5b19a: 4480 negl %d0 <== NOT EXECUTED
5b19c: 4e5e unlk %fp <== NOT EXECUTED
0004d034 <_Protected_heap_Walk>:
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d034: 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 ) {
4d038: 2039 0006 4964 movel 64964 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
bool _Protected_heap_Walk(
Heap_Control *the_heap,
int source,
bool do_dump
)
{
4d03e: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4d042: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4d046: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
4d04a: 162e 0013 moveb %fp@(19),%d3 <== NOT EXECUTED
* then it is forbidden to lock a mutex. But since we are inside
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
4d04e: 4a80 tstl %d0 <== NOT EXECUTED
4d050: 6720 beqs 4d072 <_Protected_heap_Walk+0x3e> <== NOT EXECUTED
_RTEMS_Lock_allocator();
status = _Heap_Walk( the_heap, source, do_dump );
_RTEMS_Unlock_allocator();
} else {
status = _Heap_Walk( the_heap, source, do_dump );
4d052: 2d44 000c movel %d4,%fp@(12) <== NOT EXECUTED
4d056: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
4d05c: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
4d060: 2d43 0010 movel %d3,%fp@(16) <== NOT EXECUTED
}
return status;
}
4d064: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4d06a: 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 );
4d06c: 4ef9 0004 c166 jmp 4c166 <_Heap_Walk> <== NOT EXECUTED
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
_RTEMS_Lock_allocator();
4d072: 2f39 0006 4a24 movel 64a24 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d078: 0283 0000 00ff andil #255,%d3 <== NOT EXECUTED
* a critical section, it should be safe to walk it unlocked.
*
* NOTE: Dispatching is also disabled during initialization.
*/
if ( !_Thread_Dispatch_disable_level ) {
_RTEMS_Lock_allocator();
4d07e: 4eb9 0004 b26c jsr 4b26c <_API_Mutex_Lock> <== NOT EXECUTED
status = _Heap_Walk( the_heap, source, do_dump );
4d084: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d086: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4d088: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4d08a: 4eb9 0004 c166 jsr 4c166 <_Heap_Walk> <== NOT EXECUTED
_RTEMS_Unlock_allocator();
4d090: 2f39 0006 4a24 movel 64a24 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
4d096: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4d09a: 4eb9 0004 b2cc jsr 4b2cc <_API_Mutex_Unlock> <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d0a0: 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();
4d0a4: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
} else {
status = _Heap_Walk( the_heap, source, do_dump );
}
return status;
}
4d0a8: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4d0ae: 4e5e unlk %fp <== NOT EXECUTED
...
0004b85c <_RTEMS_Tasks_Invoke_task_variable_dtor>:
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4b85c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
4b860: 2039 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
void _RTEMS_Tasks_Invoke_task_variable_dtor(
Thread_Control *the_thread,
rtems_task_variable_t *tvp
)
{
4b866: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b868: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
4b86c: 206a 0010 moveal %a2@(16),%a0 <== NOT EXECUTED
if (_Thread_Is_executing(the_thread)) {
4b870: b0ae 0008 cmpl %fp@(8),%d0 <== NOT EXECUTED
4b874: 671e beqs 4b894 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x38><== NOT EXECUTED
value = *tvp->ptr;
*tvp->ptr = tvp->gval;
} else {
value = tvp->tval;
4b876: 202a 000c movel %a2@(12),%d0 <== NOT EXECUTED
}
if ( dtor )
4b87a: 4a88 tstl %a0 <== NOT EXECUTED
4b87c: 6706 beqs 4b884 <_RTEMS_Tasks_Invoke_task_variable_dtor+0x28><== NOT EXECUTED
(*dtor)(value);
4b87e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b880: 4e90 jsr %a0@ <== NOT EXECUTED
4b882: 588f addql #4,%sp <== NOT EXECUTED
_Workspace_Free(tvp);
4b884: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4b888: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b88c: 4e5e unlk %fp <== NOT EXECUTED
}
if ( dtor )
(*dtor)(value);
_Workspace_Free(tvp);
4b88e: 4ef9 0004 9aea jmp 49aea <_Workspace_Free> <== NOT EXECUTED
void (*dtor)(void *);
void *value;
dtor = tvp->dtor;
if (_Thread_Is_executing(the_thread)) {
value = *tvp->ptr;
4b894: 226a 0004 moveal %a2@(4),%a1 <== NOT EXECUTED
4b898: 2011 movel %a1@,%d0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4b89a: 22aa 0008 movel %a2@(8),%a1@ <== NOT EXECUTED
4b89e: 60da bras 4b87a <_RTEMS_Tasks_Invoke_task_variable_dtor+0x1e><== NOT EXECUTED
0004b78a <_RTEMS_tasks_Create_extension>:
bool _RTEMS_tasks_Create_extension(
Thread_Control *executing,
Thread_Control *created
)
{
4b78a: 4e56 0000 linkw %fp,#0
4b78e: 2f0a movel %a2,%sp@-
4b790: 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() )
4b794: 4a39 0005 cce4 tstb 5cce4 <Configuration_RTEMS_API+0x4>
4b79a: 6758 beqs 4b7f4 <_RTEMS_tasks_Create_extension+0x6a>
/*
* Notepads must be the last entry in the structure and they
* can be left off if disabled in the configuration.
*/
to_allocate = sizeof( RTEMS_API_Control );
4b79c: 705e moveq #94,%d0
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
4b79e: 2f00 movel %d0,%sp@-
4b7a0: 4eb9 0004 9ace jsr 49ace <_Workspace_Allocate>
if ( !api )
4b7a6: 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 );
4b7a8: 2040 moveal %d0,%a0
if ( !api )
4b7aa: 4a80 tstl %d0
4b7ac: 6758 beqs 4b806 <_RTEMS_tasks_Create_extension+0x7c><== NEVER TAKEN
return false;
created->API_Extensions[ THREAD_API_RTEMS ] = api;
4b7ae: 2540 00fc movel %d0,%a2@(252)
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4b7b2: 4200 clrb %d0
api->pending_events = EVENT_SETS_NONE_PENDING;
4b7b4: 4290 clrl %a0@
4b7b6: 1140 0008 moveb %d0,%a0@(8)
api->event_condition = 0;
4b7ba: 42a8 0004 clrl %a0@(4)
information->handler = NULL;
4b7be: 42a8 000a clrl %a0@(10)
information->mode_set = RTEMS_DEFAULT_MODES;
4b7c2: 42a8 000e clrl %a0@(14)
information->signals_posted = 0;
4b7c6: 42a8 0012 clrl %a0@(18)
information->signals_pending = 0;
4b7ca: 42a8 0016 clrl %a0@(22)
information->nest_level = 0;
4b7ce: 42a8 001a clrl %a0@(26)
_ASR_Initialize( &api->Signal );
created->task_variables = NULL;
4b7d2: 42aa 0108 clrl %a2@(264)
if ( rtems_configuration_get_notepads_enabled() ) {
4b7d6: 4a39 0005 cce4 tstb 5cce4 <Configuration_RTEMS_API+0x4>
4b7dc: 670c beqs 4b7ea <_RTEMS_tasks_Create_extension+0x60>
* task is created via another API, then this routine is invoked
* and this API given the opportunity to initialize its extension
* area.
*/
bool _RTEMS_tasks_Create_extension(
4b7de: 41e8 001e lea %a0@(30),%a0
4b7e2: 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;
4b7e4: 4298 clrl %a0@+
4b7e6: 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++)
4b7e8: 66fa bnes 4b7e4 <_RTEMS_tasks_Create_extension+0x5a>
api->Notepads[i] = 0;
}
return true;
}
4b7ea: 246e fffc moveal %fp@(-4),%a2
4b7ee: 4e5e unlk %fp
if ( rtems_configuration_get_notepads_enabled() ) {
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
4b7f0: 7001 moveq #1,%d0
}
4b7f2: 4e75 rts
* Notepads must be the last entry in the structure and they
* can be left off if disabled in the configuration.
*/
to_allocate = sizeof( RTEMS_API_Control );
if ( !rtems_configuration_get_notepads_enabled() )
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
4b7f4: 701e moveq #30,%d0
api = _Workspace_Allocate( to_allocate );
4b7f6: 2f00 movel %d0,%sp@-
4b7f8: 4eb9 0004 9ace jsr 49ace <_Workspace_Allocate>
if ( !api )
4b7fe: 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 );
4b800: 2040 moveal %d0,%a0
if ( !api )
4b802: 4a80 tstl %d0
4b804: 66a8 bnes 4b7ae <_RTEMS_tasks_Create_extension+0x24><== ALWAYS TAKEN
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
4b806: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4b80a: 4e5e unlk %fp <== NOT EXECUTED
to_allocate -= (RTEMS_NUMBER_NOTEPADS * sizeof(uint32_t));
api = _Workspace_Allocate( to_allocate );
if ( !api )
return false;
4b80c: 4200 clrb %d0 <== NOT EXECUTED
for (i=0; i < RTEMS_NUMBER_NOTEPADS; i++)
api->Notepads[i] = 0;
}
return true;
}
0004b734 <_RTEMS_tasks_Delete_extension>:
void _RTEMS_tasks_Delete_extension(
Thread_Control *executing,
Thread_Control *deleted
)
{
4b734: 4e56 fff4 linkw %fp,#-12
4b738: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
4b73c: 246e 000c moveal %fp@(12),%a2
4b740: 47f9 0004 b85c lea 4b85c <_RTEMS_Tasks_Invoke_task_variable_dtor>,%a3
/*
* Free per task variable memory
*/
tvp = deleted->task_variables;
4b746: 206a 0108 moveal %a2@(264),%a0
deleted->task_variables = NULL;
4b74a: 42aa 0108 clrl %a2@(264)
while (tvp) {
4b74e: 4a88 tstl %a0
4b750: 671e beqs 4b770 <_RTEMS_tasks_Delete_extension+0x3c><== ALWAYS TAKEN
next = (rtems_task_variable_t *)tvp->next;
4b752: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4b754: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b756: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b758: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4b75a: 508f addql #8,%sp <== NOT EXECUTED
4b75c: 4a82 tstl %d2 <== NOT EXECUTED
4b75e: 6710 beqs 4b770 <_RTEMS_tasks_Delete_extension+0x3c><== NOT EXECUTED
next = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
tvp = next;
4b760: 2042 moveal %d2,%a0 <== NOT EXECUTED
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
next = (rtems_task_variable_t *)tvp->next;
4b762: 2410 movel %a0@,%d2 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( deleted, tvp );
4b764: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4b766: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4b768: 4e93 jsr %a3@ <== NOT EXECUTED
* Free per task variable memory
*/
tvp = deleted->task_variables;
deleted->task_variables = NULL;
while (tvp) {
4b76a: 508f addql #8,%sp <== NOT EXECUTED
4b76c: 4a82 tstl %d2 <== NOT EXECUTED
4b76e: 66f0 bnes 4b760 <_RTEMS_tasks_Delete_extension+0x2c><== NOT EXECUTED
/*
* Free API specific memory
*/
(void) _Workspace_Free( deleted->API_Extensions[ THREAD_API_RTEMS ] );
4b770: 2f2a 00fc movel %a2@(252),%sp@-
4b774: 4eb9 0004 9aea jsr 49aea <_Workspace_Free>
deleted->API_Extensions[ THREAD_API_RTEMS ] = NULL;
4b77a: 588f addql #4,%sp
4b77c: 42aa 00fc clrl %a2@(252)
}
4b780: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3
4b786: 4e5e unlk %fp <== NOT EXECUTED
0004689c <_RTEMS_tasks_Initialize_user_tasks_body>:
*
* Output parameters: NONE
*/
void _RTEMS_tasks_Initialize_user_tasks_body( void )
{
4689c: 4e56 ffe4 linkw %fp,#-28
468a0: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@
rtems_initialization_tasks_table *user_tasks;
/*
* Move information into local variables
*/
user_tasks = Configuration_RTEMS_API.User_initialization_tasks_table;
468a4: 2479 0005 cd0a moveal 5cd0a <Configuration_RTEMS_API+0x2a>,%a2
maximum = Configuration_RTEMS_API.number_of_initialization_tasks;
468aa: 2639 0005 cd06 movel 5cd06 <Configuration_RTEMS_API+0x26>,%d3
/*
* Verify that we have a set of user tasks to iterate
*/
if ( !user_tasks )
468b0: 4a8a tstl %a2
468b2: 6754 beqs 46908 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
468b4: 4a83 tstl %d3
468b6: 6750 beqs 46908 <_RTEMS_tasks_Initialize_user_tasks_body+0x6c><== NEVER TAKEN
468b8: 280e movel %fp,%d4
468ba: 4282 clrl %d2
468bc: 5984 subql #4,%d4
468be: 47f9 0004 6674 lea 46674 <rtems_task_create>,%a3
&id
);
if ( !rtems_is_status_successful( return_value ) )
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
return_value = rtems_task_start(
468c4: 49f9 0004 6924 lea 46924 <rtems_task_start>,%a4
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
return_value = rtems_task_create(
468ca: 2f04 movel %d4,%sp@-
468cc: 2f2a 000c movel %a2@(12),%sp@-
468d0: 2f2a 0014 movel %a2@(20),%sp@-
468d4: 2f2a 0004 movel %a2@(4),%sp@-
468d8: 2f2a 0008 movel %a2@(8),%sp@-
468dc: 2f12 movel %a2@,%sp@-
468de: 4e93 jsr %a3@
user_tasks[ index ].stack_size,
user_tasks[ index ].mode_set,
user_tasks[ index ].attribute_set,
&id
);
if ( !rtems_is_status_successful( return_value ) )
468e0: 4fef 0018 lea %sp@(24),%sp
468e4: 4a80 tstl %d0
468e6: 662a bnes 46912 <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
return_value = rtems_task_start(
468e8: 2f2a 0018 movel %a2@(24),%sp@-
468ec: 2f2a 0010 movel %a2@(16),%sp@-
468f0: 2f2e fffc movel %fp@(-4),%sp@-
468f4: 4e94 jsr %a4@
id,
user_tasks[ index ].entry_point,
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
468f6: 4fef 000c lea %sp@(12),%sp
468fa: 4a80 tstl %d0
468fc: 6614 bnes 46912 <_RTEMS_tasks_Initialize_user_tasks_body+0x76>
return;
/*
* Now iterate over the initialization tasks and create/start them.
*/
for ( index=0 ; index < maximum ; index++ ) {
468fe: 5282 addql #1,%d2
46900: 45ea 001c lea %a2@(28),%a2
46904: b483 cmpl %d3,%d2
46906: 65c2 bcss 468ca <_RTEMS_tasks_Initialize_user_tasks_body+0x2e><== NEVER TAKEN
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
}
}
46908: 4cee 1c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a4
4690e: 4e5e unlk %fp
46910: 4e75 rts
id,
user_tasks[ index ].entry_point,
user_tasks[ index ].argument
);
if ( !rtems_is_status_successful( return_value ) )
_Internal_error_Occurred( INTERNAL_ERROR_RTEMS_API, true, return_value );
46912: 2f00 movel %d0,%sp@-
46914: 4878 0001 pea 1 <ADD>
46918: 4878 0001 pea 1 <ADD>
4691c: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
0004b6b8 <_RTEMS_tasks_Post_switch_extension>:
*/
void _RTEMS_tasks_Post_switch_extension(
Thread_Control *executing
)
{
4b6b8: 4e56 ffec linkw %fp,#-20
4b6bc: 206e 0008 moveal %fp@(8),%a0
4b6c0: 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 ];
4b6c4: 2468 00fc moveal %a0@(252),%a2
if ( !api )
4b6c8: 4a8a tstl %a2
4b6ca: 671a beqs 4b6e6 <_RTEMS_tasks_Post_switch_extension+0x2e><== NEVER TAKEN
* Signal Processing
*/
asr = &api->Signal;
_ISR_Disable( level );
4b6cc: 203c 0000 0700 movel #1792,%d0
4b6d2: 40c1 movew %sr,%d1
4b6d4: 8081 orl %d1,%d0
4b6d6: 46c0 movew %d0,%sr
signal_set = asr->signals_posted;
4b6d8: 242a 0012 movel %a2@(18),%d2
asr->signals_posted = 0;
4b6dc: 42aa 0012 clrl %a2@(18)
_ISR_Enable( level );
4b6e0: 46c1 movew %d1,%sr
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
4b6e2: 4a82 tstl %d2
4b6e4: 660a bnes 4b6f0 <_RTEMS_tasks_Post_switch_extension+0x38><== NEVER TAKEN
(*asr->handler)( signal_set );
asr->nest_level -= 1;
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
}
4b6e6: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3
4b6ec: 4e5e unlk %fp
4b6ee: 4e75 rts
if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */
return;
asr->nest_level += 1;
4b6f0: 52aa 001a addql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode );
4b6f4: 260e movel %fp,%d3 <== NOT EXECUTED
4b6f6: 5983 subql #4,%d3 <== NOT EXECUTED
4b6f8: 47f9 0004 d434 lea 4d434 <rtems_task_mode>,%a3 <== NOT EXECUTED
4b6fe: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b700: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4b706: 2f2a 000e movel %a2@(14),%sp@- <== NOT EXECUTED
4b70a: 4e93 jsr %a3@ <== NOT EXECUTED
(*asr->handler)( signal_set );
4b70c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b70e: 206a 000a moveal %a2@(10),%a0 <== NOT EXECUTED
4b712: 4e90 jsr %a0@ <== NOT EXECUTED
asr->nest_level -= 1;
4b714: 53aa 001a subql #1,%a2@(26) <== NOT EXECUTED
rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );
4b718: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b71a: 2f3c 0000 ffff movel #65535,%sp@- <== NOT EXECUTED
4b720: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
4b724: 4e93 jsr %a3@ <== NOT EXECUTED
4b726: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
}
4b72a: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4b730: 4e5e unlk %fp <== NOT EXECUTED
0004b65e <_RTEMS_tasks_Switch_extension>:
void _RTEMS_tasks_Switch_extension(
Thread_Control *executing,
Thread_Control *heir
)
{
4b65e: 4e56 0000 linkw %fp,#0
4b662: 206e 0008 moveal %fp@(8),%a0
/*
* Per Task Variables
*/
tvp = executing->task_variables;
4b666: 2068 0108 moveal %a0@(264),%a0
while (tvp) {
4b66a: 4a88 tstl %a0
4b66c: 6712 beqs 4b680 <_RTEMS_tasks_Switch_extension+0x22><== ALWAYS TAKEN
tvp->tval = *tvp->ptr;
4b66e: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4b672: 2151 000c movel %a1@,%a0@(12) <== NOT EXECUTED
*tvp->ptr = tvp->gval;
4b676: 22a8 0008 movel %a0@(8),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4b67a: 2050 moveal %a0@,%a0 <== NOT EXECUTED
/*
* Per Task Variables
*/
tvp = executing->task_variables;
while (tvp) {
4b67c: 4a88 tstl %a0 <== NOT EXECUTED
4b67e: 66ee bnes 4b66e <_RTEMS_tasks_Switch_extension+0x10><== NOT EXECUTED
tvp->tval = *tvp->ptr;
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
4b680: 206e 000c moveal %fp@(12),%a0
4b684: 2068 0108 moveal %a0@(264),%a0
while (tvp) {
4b688: 4a88 tstl %a0
4b68a: 6712 beqs 4b69e <_RTEMS_tasks_Switch_extension+0x40><== ALWAYS TAKEN
tvp->gval = *tvp->ptr;
4b68c: 2268 0004 moveal %a0@(4),%a1 <== NOT EXECUTED
4b690: 2151 0008 movel %a1@,%a0@(8) <== NOT EXECUTED
*tvp->ptr = tvp->tval;
4b694: 22a8 000c movel %a0@(12),%a1@ <== NOT EXECUTED
tvp = (rtems_task_variable_t *)tvp->next;
4b698: 2050 moveal %a0@,%a0 <== NOT EXECUTED
*tvp->ptr = tvp->gval;
tvp = (rtems_task_variable_t *)tvp->next;
}
tvp = heir->task_variables;
while (tvp) {
4b69a: 4a88 tstl %a0 <== NOT EXECUTED
4b69c: 66ee bnes 4b68c <_RTEMS_tasks_Switch_extension+0x2e><== NOT EXECUTED
tvp->gval = *tvp->ptr;
*tvp->ptr = tvp->tval;
tvp = (rtems_task_variable_t *)tvp->next;
}
}
4b69e: 4e5e unlk %fp <== NOT EXECUTED
000472c0 <_Rate_monotonic_Get_status>:
bool _Rate_monotonic_Get_status(
Rate_monotonic_Control *the_period,
Rate_monotonic_Period_time_t *wall_since_last_period,
Thread_CPU_usage_t *cpu_since_last_period
)
{
472c0: 4e56 ffd0 linkw %fp,#-48 <== NOT EXECUTED
472c4: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
/*
* Determine elapsed wall time since period initiated.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
472c8: 280e movel %fp,%d4 <== NOT EXECUTED
472ca: 5184 subql #8,%d4 <== NOT EXECUTED
_Timestamp_Subtract(
472cc: 45f9 0004 b150 lea 4b150 <_Timespec_Subtract>,%a2 <== NOT EXECUTED
bool _Rate_monotonic_Get_status(
Rate_monotonic_Control *the_period,
Rate_monotonic_Period_time_t *wall_since_last_period,
Thread_CPU_usage_t *cpu_since_last_period
)
{
472d2: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
/*
* Determine elapsed wall time since period initiated.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
472d6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
)
{
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
#endif
Thread_Control *owning_thread = the_period->owner;
472d8: 286b 0040 moveal %a3@(64),%a4 <== NOT EXECUTED
/*
* Determine elapsed wall time since period initiated.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_TOD_Get_uptime( &uptime );
472dc: 4eb9 0004 8d80 jsr 48d80 <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_Subtract(
472e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
472e6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
472e8: 486b 004c pea %a3@(76) <== NOT EXECUTED
472ec: 4e92 jsr %a2@ <== NOT EXECUTED
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
472ee: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#endif
/*
* Determine cpu usage since period initiated.
*/
used = owning_thread->cpu_time_used;
472f2: 202c 0082 movel %a4@(130),%d0 <== NOT EXECUTED
472f6: 222c 0086 movel %a4@(134),%d1 <== NOT EXECUTED
472fa: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
472fe: 2d41 fff4 movel %d1,%fp@(-12) <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
47302: b9f9 0006 0860 cmpal 60860 <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED
47308: 670c beqs 47316 <_Rate_monotonic_Get_status+0x56><== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4730a: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED
if (used < the_period->cpu_usage_period_initiated)
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
47310: 7001 moveq #1,%d0 <== NOT EXECUTED
}
47312: 4e5e unlk %fp <== NOT EXECUTED
47314: 4e75 rts <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
47316: 49ee ffe8 lea %fp@(-24),%a4 <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
4731a: 240e movel %fp,%d2 <== NOT EXECUTED
4731c: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
/*
* The cpu usage info was reset while executing. Can't
* determine a status.
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
47322: 260b movel %a3,%d3 <== NOT EXECUTED
47324: 0683 0000 0044 addil #68,%d3 <== NOT EXECUTED
if (owning_thread == _Thread_Executing) {
Thread_CPU_usage_t ran;
/* How much time time since last context switch */
_Timestamp_Subtract(
4732a: 2f0c movel %a4,%sp@- <== NOT EXECUTED
4732c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4732e: 4879 0006 076c pea 6076c <_Thread_Time_of_last_context_switch><== NOT EXECUTED
47334: 4e92 jsr %a2@ <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
/* cpu usage += ran */
_Timestamp_Add_to( &used, &ran );
47336: 2f0c movel %a4,%sp@- <== NOT EXECUTED
47338: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4733a: 4eb9 0004 b010 jsr 4b010 <_Timespec_Add_to> <== NOT EXECUTED
/*
* The cpu usage info was reset while executing. Can't
* determine a status.
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
47340: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47342: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47344: 4eb9 0004 b11c jsr 4b11c <_Timespec_Less_than> <== NOT EXECUTED
4734a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4734e: 4a00 tstb %d0 <== NOT EXECUTED
47350: 670c beqs 4735e <_Rate_monotonic_Get_status+0x9e><== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
47352: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED
/*
* The cpu usage info was reset while executing. Can't
* determine a status.
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
return false;
47358: 4200 clrb %d0 <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4735a: 4e5e unlk %fp <== NOT EXECUTED
4735c: 4e75 rts <== NOT EXECUTED
*/
if (_Timestamp_Less_than(&used, &the_period->cpu_usage_period_initiated))
return false;
/* used = current cpu usage - cpu usage at start of period */
_Timestamp_Subtract(
4735e: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
47362: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47364: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47366: 4e92 jsr %a2@ <== NOT EXECUTED
47368: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
}
4736c: 4cee 1c1c ffd0 moveml %fp@(-48),%d2-%d4/%a2-%a4 <== NOT EXECUTED
if (used < the_period->cpu_usage_period_initiated)
return false;
*cpu_since_last_period = used - the_period->cpu_usage_period_initiated;
#endif
return true;
47372: 7001 moveq #1,%d0 <== NOT EXECUTED
}
47374: 4e5e unlk %fp <== NOT EXECUTED
00047378 <_Rate_monotonic_Initiate_statistics>:
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
47378: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
4737c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
47380: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
* If using nanosecond statistics, we need to obtain the uptime.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
_TOD_Get_uptime( &uptime );
47384: 240e movel %fp,%d2 <== NOT EXECUTED
47386: 5182 subql #8,%d2 <== NOT EXECUTED
void _Rate_monotonic_Initiate_statistics(
Rate_monotonic_Control *the_period
)
{
Thread_Control *owning_thread = the_period->owner;
47388: 266a 0040 moveal %a2@(64),%a3 <== NOT EXECUTED
* If using nanosecond statistics, we need to obtain the uptime.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
Timestamp_Control uptime;
_TOD_Get_uptime( &uptime );
4738c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4738e: 4eb9 0004 8d80 jsr 48d80 <_TOD_Get_uptime> <== NOT EXECUTED
* routine is invoked from rtems_rate_monotonic_period, the owner will
* be the executing thread. When this routine is invoked from
* _Rate_monotonic_Timeout, it will not.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
47394: 588f addql #4,%sp <== NOT EXECUTED
/*
* Set the starting point and the CPU time used for the statistics.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
the_period->time_period_initiated = uptime;
47396: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
4739a: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4739e: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
473a2: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
#else
the_period->time_period_initiated = _Watchdog_Ticks_since_boot;
#endif
the_period->cpu_usage_period_initiated = owning_thread->cpu_time_used;
473a6: 202b 0082 movel %a3@(130),%d0 <== NOT EXECUTED
473aa: 222b 0086 movel %a3@(134),%d1 <== NOT EXECUTED
473ae: 2540 0044 movel %d0,%a2@(68) <== NOT EXECUTED
473b2: 2541 0048 movel %d1,%a2@(72) <== NOT EXECUTED
* routine is invoked from rtems_rate_monotonic_period, the owner will
* be the executing thread. When this routine is invoked from
* _Rate_monotonic_Timeout, it will not.
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
if (owning_thread == _Thread_Executing) {
473b6: b7f9 0006 0860 cmpal 60860 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
473bc: 670a beqs 473c8 <_Rate_monotonic_Initiate_statistics+0x50><== NOT EXECUTED
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
}
#endif
}
473be: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED
473c4: 4e5e unlk %fp <== NOT EXECUTED
473c6: 4e75 rts <== NOT EXECUTED
/*
* Adjust the CPU time used to account for the time since last
* context switch.
*/
_Timespec_Subtract(
&_Thread_Time_of_last_context_switch, &uptime, &ran
473c8: 47ee fff0 lea %fp@(-16),%a3 <== NOT EXECUTED
/*
* Adjust the CPU time used to account for the time since last
* context switch.
*/
_Timespec_Subtract(
473cc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
473ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
473d0: 4879 0006 076c pea 6076c <_Thread_Time_of_last_context_switch><== NOT EXECUTED
473d6: 4eb9 0004 b150 jsr 4b150 <_Timespec_Subtract> <== NOT EXECUTED
&_Thread_Time_of_last_context_switch, &uptime, &ran
);
_Timespec_Add_to( &the_period->cpu_usage_period_initiated, &ran );
473dc: 2f0b movel %a3,%sp@- <== NOT EXECUTED
473de: 486a 0044 pea %a2@(68) <== NOT EXECUTED
473e2: 4eb9 0004 b010 jsr 4b010 <_Timespec_Add_to> <== NOT EXECUTED
473e8: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
}
#endif
}
473ec: 4cee 0c04 ffe4 moveml %fp@(-28),%d2/%a2-%a3 <== NOT EXECUTED
473f2: 4e5e unlk %fp <== NOT EXECUTED
00047994 <_Rate_monotonic_Timeout>:
void _Rate_monotonic_Timeout(
Objects_Id id,
void *ignored
)
{
47994: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47998: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4799a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4799e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
479a2: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
479a8: 4eb9 0004 98e8 jsr 498e8 <_Objects_Get> <== NOT EXECUTED
/*
* When we get here, the Timer is already off the chain so we do not
* have to worry about that -- hence no _Watchdog_Remove().
*/
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
479ae: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
479b2: 2440 moveal %d0,%a2 <== NOT EXECUTED
479b4: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
479b8: 6636 bnes 479f0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_thread = the_period->owner;
479ba: 206a 0040 moveal %a2@(64),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_period (
States_Control the_states
)
{
return (the_states & STATES_WAITING_FOR_PERIOD);
479be: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
479c2: 0280 0000 4000 andil #16384,%d0 <== NOT EXECUTED
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
479c8: 670a beqs 479d4 <_Rate_monotonic_Timeout+0x40> <== NOT EXECUTED
479ca: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
479ce: b0a8 0020 cmpl %a0@(32),%d0 <== NOT EXECUTED
479d2: 675e beqs 47a32 <_Rate_monotonic_Timeout+0x9e> <== NOT EXECUTED
_Thread_Unblock( the_thread );
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
479d4: 7001 moveq #1,%d0 <== NOT EXECUTED
479d6: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
479da: 671c beqs 479f8 <_Rate_monotonic_Timeout+0x64> <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else
the_period->state = RATE_MONOTONIC_EXPIRED;
479dc: 7004 moveq #4,%d0 <== NOT EXECUTED
479de: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
479e2: 2039 0006 06a0 movel 606a0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
479e8: 5380 subql #1,%d0 <== NOT EXECUTED
479ea: 23c0 0006 06a0 movel %d0,606a0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
case OBJECTS_REMOTE: /* impossible */
#endif
case OBJECTS_ERROR:
break;
}
}
479f0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
479f4: 4e5e unlk %fp <== NOT EXECUTED
479f6: 4e75 rts <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
} else if ( the_period->state == RATE_MONOTONIC_OWNER_IS_BLOCKING ) {
the_period->state = RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING;
479f8: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
479fc: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
_Rate_monotonic_Initiate_statistics( the_period );
47a00: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47a02: 4eb9 0004 7378 jsr 47378 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
47a08: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
47a0e: 486a 0010 pea %a2@(16) <== NOT EXECUTED
47a12: 4879 0006 0780 pea 60780 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47a18: 4eb9 0004 b458 jsr 4b458 <_Watchdog_Insert> <== NOT EXECUTED
47a1e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47a22: 2039 0006 06a0 movel 606a0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47a28: 5380 subql #1,%d0 <== NOT EXECUTED
47a2a: 23c0 0006 06a0 movel %d0,606a0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
47a30: 60be bras 479f0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
47a32: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
47a38: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47a3a: 4eb9 0004 a0c0 jsr 4a0c0 <_Thread_Clear_state> <== NOT EXECUTED
the_thread = the_period->owner;
if ( _States_Is_waiting_for_period( the_thread->current_state ) &&
the_thread->Wait.id == the_period->Object.id ) {
_Thread_Unblock( the_thread );
_Rate_monotonic_Initiate_statistics( the_period );
47a40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47a42: 4eb9 0004 7378 jsr 47378 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
47a48: 256a 003c 001c movel %a2@(60),%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
47a4e: 486a 0010 pea %a2@(16) <== NOT EXECUTED
47a52: 4879 0006 0780 pea 60780 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47a58: 4eb9 0004 b458 jsr 4b458 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, the_period->next_length );
47a5e: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
47a62: 2039 0006 06a0 movel 606a0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
47a68: 5380 subql #1,%d0 <== NOT EXECUTED
47a6a: 23c0 0006 06a0 movel %d0,606a0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
47a70: 6000 ff7e braw 479f0 <_Rate_monotonic_Timeout+0x5c> <== NOT EXECUTED
000473f6 <_Rate_monotonic_Update_statistics>:
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
473f6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
void _Rate_monotonic_Update_statistics(
Rate_monotonic_Control *the_period
)
{
473f8: 4e56 ffd8 linkw %fp,#-40 <== NOT EXECUTED
473fc: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
47400: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
/*
* Update the counts.
*/
stats = &the_period->Statistics;
stats->count++;
47404: 52aa 0054 addql #1,%a2@(84) <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
47408: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
4740c: 6700 00c6 beqw 474d4 <_Rate_monotonic_Update_statistics+0xde><== NOT EXECUTED
/*
* Grab status for time statistics.
*/
valid_status =
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
47410: 260e movel %fp,%d3 <== NOT EXECUTED
47412: 5183 subql #8,%d3 <== NOT EXECUTED
47414: 240e movel %fp,%d2 <== NOT EXECUTED
47416: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
4741c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4741e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47420: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47422: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
47428: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4742c: 4a00 tstb %d0 <== NOT EXECUTED
4742e: 660a bnes 4743a <_Rate_monotonic_Update_statistics+0x44><== NOT EXECUTED
stats->min_wall_time = since_last_period;
if ( since_last_period > stats->max_wall_time )
stats->max_wall_time = since_last_period;
#endif
}
47430: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED
47436: 4e5e unlk %fp <== NOT EXECUTED
47438: 4e75 rts <== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4743a: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4743c: 486a 006c pea %a2@(108) <== NOT EXECUTED
47440: 4bf9 0004 b010 lea 4b010 <_Timespec_Add_to>,%a5 <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
47446: 49f9 0004 b11c lea 4b11c <_Timespec_Less_than>,%a4 <== NOT EXECUTED
/*
* Update CPU time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_cpu_time, &executed );
4744c: 4e95 jsr %a5@ <== NOT EXECUTED
if ( _Timestamp_Less_than( &executed, &stats->min_cpu_time ) )
4744e: 486a 005c pea %a2@(92) <== NOT EXECUTED
47452: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47454: 4e94 jsr %a4@ <== NOT EXECUTED
47456: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4745a: 4a00 tstb %d0 <== NOT EXECUTED
4745c: 6710 beqs 4746e <_Rate_monotonic_Update_statistics+0x78><== NOT EXECUTED
stats->min_cpu_time = executed;
4745e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47462: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
47466: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
4746a: 2541 0060 movel %d1,%a2@(96) <== NOT EXECUTED
if ( _Timestamp_Greater_than( &executed, &stats->max_cpu_time ) )
4746e: 486a 0064 pea %a2@(100) <== NOT EXECUTED
47472: 47f9 0004 b0e8 lea 4b0e8 <_Timespec_Greater_than>,%a3 <== NOT EXECUTED
47478: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4747a: 4e93 jsr %a3@ <== NOT EXECUTED
4747c: 508f addql #8,%sp <== NOT EXECUTED
4747e: 4a00 tstb %d0 <== NOT EXECUTED
47480: 6710 beqs 47492 <_Rate_monotonic_Update_statistics+0x9c><== NOT EXECUTED
stats->max_cpu_time = executed;
47482: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47486: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
4748a: 2540 0064 movel %d0,%a2@(100) <== NOT EXECUTED
4748e: 2541 0068 movel %d1,%a2@(104) <== NOT EXECUTED
/*
* Update Wall time
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_wall_time, &since_last_period );
47492: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47494: 486a 0084 pea %a2@(132) <== NOT EXECUTED
47498: 4e95 jsr %a5@ <== NOT EXECUTED
if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
4749a: 486a 0074 pea %a2@(116) <== NOT EXECUTED
4749e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474a0: 4e94 jsr %a4@ <== NOT EXECUTED
474a2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
474a6: 4a00 tstb %d0 <== NOT EXECUTED
474a8: 6654 bnes 474fe <_Rate_monotonic_Update_statistics+0x108><== NOT EXECUTED
stats->min_wall_time = since_last_period;
if ( _Timestamp_Greater_than( &since_last_period, &stats->max_wall_time ) )
474aa: 486a 007c pea %a2@(124) <== NOT EXECUTED
474ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474b0: 4e93 jsr %a3@ <== NOT EXECUTED
474b2: 508f addql #8,%sp <== NOT EXECUTED
474b4: 4a00 tstb %d0 <== NOT EXECUTED
474b6: 6700 ff78 beqw 47430 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED
stats->max_wall_time = since_last_period;
474ba: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
474be: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
474c2: 2540 007c movel %d0,%a2@(124) <== NOT EXECUTED
474c6: 2541 0080 movel %d1,%a2@(128) <== NOT EXECUTED
stats->min_wall_time = since_last_period;
if ( since_last_period > stats->max_wall_time )
stats->max_wall_time = since_last_period;
#endif
}
474ca: 4cee 3c0c ffd8 moveml %fp@(-40),%d2-%d3/%a2-%a5 <== NOT EXECUTED
474d0: 4e5e unlk %fp <== NOT EXECUTED
474d2: 4e75 rts <== NOT EXECUTED
*/
stats = &the_period->Statistics;
stats->count++;
if ( the_period->state == RATE_MONOTONIC_EXPIRED )
stats->missed_count++;
474d4: 52aa 0058 addql #1,%a2@(88) <== NOT EXECUTED
/*
* Grab status for time statistics.
*/
valid_status =
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
474d8: 260e movel %fp,%d3 <== NOT EXECUTED
474da: 5183 subql #8,%d3 <== NOT EXECUTED
474dc: 240e movel %fp,%d2 <== NOT EXECUTED
474de: 0682 ffff fff0 addil #-16,%d2 <== NOT EXECUTED
stats->missed_count++;
/*
* Grab status for time statistics.
*/
valid_status =
474e4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
474e6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
474e8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
474ea: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status( the_period, &since_last_period, &executed );
if (!valid_status)
474f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
474f4: 4a00 tstb %d0 <== NOT EXECUTED
474f6: 6700 ff38 beqw 47430 <_Rate_monotonic_Update_statistics+0x3a><== NOT EXECUTED
474fa: 6000 ff3e braw 4743a <_Rate_monotonic_Update_statistics+0x44><== NOT EXECUTED
*/
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_Add_to( &stats->total_wall_time, &since_last_period );
if ( _Timestamp_Less_than( &since_last_period, &stats->min_wall_time ) )
stats->min_wall_time = since_last_period;
474fe: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
47502: 222e fff4 movel %fp@(-12),%d1 <== NOT EXECUTED
47506: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
4750a: 2541 0078 movel %d1,%a2@(120) <== NOT EXECUTED
4750e: 609a bras 474aa <_Rate_monotonic_Update_statistics+0xb4><== NOT EXECUTED
0005f358 <_Region_Process_queue>:
*/
void _Region_Process_queue(
Region_Control *the_region
)
{
5f358: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5f35c: 2039 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5f362: 5280 addql #1,%d0 <== NOT EXECUTED
5f364: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5f368: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
5f36c: 23c0 0007 d234 movel %d0,7d234 <_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();
5f372: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5f378: 240b movel %a3,%d2 <== NOT EXECUTED
5f37a: 0682 0000 0010 addil #16,%d2 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Region_Allocate_segment (
Region_Control *the_region,
uintptr_t size
)
{
return _Heap_Allocate( &the_region->Memory, size );
5f380: 260b movel %a3,%d3 <== NOT EXECUTED
5f382: 49f9 0005 fc0c lea 5fc0c <_Thread_queue_First>,%a4 <== NOT EXECUTED
5f388: 0683 0000 0068 addil #104,%d3 <== NOT EXECUTED
5f38e: 4bf9 0005 a738 lea 5a738 <_Heap_Allocate_aligned_with_boundary>,%a5<== NOT EXECUTED
5f394: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
5f39a: 588f addql #4,%sp <== NOT EXECUTED
if ( the_segment == NULL )
break;
*(void **)the_thread->Wait.return_argument = the_segment;
the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
5f39c: 283c 0005 fae4 movel #391908,%d4 <== NOT EXECUTED
/*
* NOTE: The following loop is O(n) where n is the number of
* threads whose memory request is satisfied.
*/
for ( ; ; ) {
the_thread = _Thread_queue_First( &the_region->Wait_queue );
5f3a2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f3a4: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5f3a6: 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 );
5f3a8: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5f3aa: 4a80 tstl %d0 <== NOT EXECUTED
5f3ac: 6738 beqs 5f3e6 <_Region_Process_queue+0x8e> <== NOT EXECUTED
5f3ae: 42a7 clrl %sp@- <== NOT EXECUTED
5f3b0: 42a7 clrl %sp@- <== NOT EXECUTED
5f3b2: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
5f3b6: 2f03 movel %d3,%sp@- <== NOT EXECUTED
5f3b8: 4e95 jsr %a5@ <== NOT EXECUTED
the_segment = (void **) _Region_Allocate_segment(
the_region,
the_thread->Wait.count
);
if ( the_segment == NULL )
5f3ba: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5f3be: 4a80 tstl %d0 <== NOT EXECUTED
5f3c0: 6724 beqs 5f3e6 <_Region_Process_queue+0x8e> <== NOT EXECUTED
break;
*(void **)the_thread->Wait.return_argument = the_segment;
5f3c2: 206a 0028 moveal %a2@(40),%a0 <== NOT EXECUTED
5f3c6: 2080 movel %d0,%a0@ <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
5f3c8: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
5f3cc: 2044 moveal %d4,%a0 <== NOT EXECUTED
5f3ce: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5f3d0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f3d2: 4e90 jsr %a0@ <== NOT EXECUTED
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
5f3d4: 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;
5f3d6: 42aa 0034 clrl %a2@(52) <== NOT EXECUTED
/*
* NOTE: The following loop is O(n) where n is the number of
* threads whose memory request is satisfied.
*/
for ( ; ; ) {
the_thread = _Thread_queue_First( &the_region->Wait_queue );
5f3da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5f3dc: 4e94 jsr %a4@ <== NOT EXECUTED
if ( the_thread == NULL )
5f3de: 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 );
5f3e0: 2440 moveal %d0,%a2 <== NOT EXECUTED
if ( the_thread == NULL )
5f3e2: 4a80 tstl %d0 <== NOT EXECUTED
5f3e4: 66c8 bnes 5f3ae <_Region_Process_queue+0x56> <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
_Thread_queue_Extract( &the_region->Wait_queue, the_thread );
the_thread->Wait.return_code = RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
}
5f3e6: 4cee 3c1c ffe4 moveml %fp@(-28),%d2-%d4/%a2-%a5 <== NOT EXECUTED
5f3ec: 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();
5f3ee: 4ef9 0005 c3da jmp 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
0004beb8 <_Scheduler_priority_Block>:
void _Scheduler_priority_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
4beb8: 4e56 0000 linkw %fp,#0
4bebc: 206e 000c moveal %fp@(12),%a0
4bec0: 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;
4bec2: 2268 008a moveal %a0@(138),%a1
4bec6: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
4bec8: 2029 0008 movel %a1@(8),%d0
4becc: b091 cmpl %a1@,%d0
4bece: 677e beqs 4bf4e <_Scheduler_priority_Block+0x96>
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4bed0: 2450 moveal %a0@,%a2
previous = the_node->previous;
4bed2: 2268 0004 moveal %a0@(4),%a1
next->previous = previous;
4bed6: 2549 0004 movel %a1,%a2@(4)
previous->next = next;
4beda: 228a movel %a2,%a1@
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4bedc: b1f9 0005 e6fc cmpal 5e6fc <_Per_CPU_Information+0x10>,%a0
4bee2: 671c beqs 4bf00 <_Scheduler_priority_Block+0x48>
_Scheduler_priority_Schedule_body(the_scheduler);
if ( _Thread_Is_executing( the_thread ) )
4bee4: b1f9 0005 e6f8 cmpal 5e6f8 <_Per_CPU_Information+0xc>,%a0
4beea: 6706 beqs 4bef2 <_Scheduler_priority_Block+0x3a>
_Scheduler_priority_Block_body(the_scheduler, the_thread);
}
4beec: 245f moveal %sp@+,%a2
4beee: 4e5e unlk %fp
4bef0: 4e75 rts
4bef2: 245f moveal %sp@+,%a2
4bef4: 4e5e unlk %fp
_Thread_Dispatch_necessary = true;
4bef6: 7001 moveq #1,%d0
4bef8: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18>
4befe: 4e75 rts
RTEMS_INLINE_ROUTINE Priority_Control _Priority_bit_map_Get_highest( void )
{
Priority_bit_map_Control minor;
Priority_bit_map_Control major;
_Bitfield_Find_first_bit( _Priority_Major_bit_map, major );
4bf00: 3039 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d0
4bf06: 4840 swap %d0
4bf08: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
4bf0a: 43f9 0005 e70c lea 5e70c <_Priority_Bit_map>,%a1
4bf10: 0280 0000 ffff andil #65535,%d0
4bf16: 3231 0a00 movew %a1@(00000000,%d0:l:2),%d1
4bf1a: 4841 swap %d1
4bf1c: 04c1 ff1 %d1
4bf1e: 226e 0008 moveal %fp@(8),%a1
return (_Priority_Bits_index( major ) << 4) +
4bf22: 0281 0000 ffff andil #65535,%d1
4bf28: e988 lsll #4,%d0
4bf2a: 2251 moveal %a1@,%a1
4bf2c: 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 ] ) )
4bf2e: 2200 movel %d0,%d1
4bf30: e988 lsll #4,%d0
4bf32: e589 lsll #2,%d1
4bf34: 9081 subl %d1,%d0
4bf36: d3c0 addal %d0,%a1
4bf38: 2019 movel %a1@+,%d0
4bf3a: b3c0 cmpal %d0,%a1
4bf3c: 6754 beqs 4bf92 <_Scheduler_priority_Block+0xda> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4bf3e: 23c0 0005 e6fc movel %d0,5e6fc <_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 ) )
4bf44: b1f9 0005 e6f8 cmpal 5e6f8 <_Per_CPU_Information+0xc>,%a0
4bf4a: 66a0 bnes 4beec <_Scheduler_priority_Block+0x34> <== NEVER TAKEN
4bf4c: 60a4 bras 4bef2 <_Scheduler_priority_Block+0x3a>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4bf4e: 2009 movel %a1,%d0
4bf50: 5880 addql #4,%d0
head->next = tail;
head->previous = NULL;
4bf52: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4bf56: 2280 movel %d0,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4bf58: 2349 0008 movel %a1,%a1@(8)
{
Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
if ( _Chain_Has_only_one_node( ready ) ) {
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
4bf5c: 2268 008a moveal %a0@(138),%a1
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
4bf60: 2469 0004 moveal %a1@(4),%a2
4bf64: 3029 000e movew %a1@(14),%d0
4bf68: 3212 movew %a2@,%d1
4bf6a: c081 andl %d1,%d0
4bf6c: 3480 movew %d0,%a2@
if ( *the_priority_map->minor == 0 )
4bf6e: 6600 ff6c bnew 4bedc <_Scheduler_priority_Block+0x24>
_Priority_Major_bit_map &= the_priority_map->block_major;
4bf72: 3239 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d1
4bf78: 3029 000c movew %a1@(12),%d0
4bf7c: c081 andl %d1,%d0
4bf7e: 33c0 0005 e708 movew %d0,5e708 <_Priority_Major_bit_map>
{
_Scheduler_priority_Ready_queue_extract(the_thread);
/* TODO: flash critical section */
if ( _Thread_Is_heir( the_thread ) )
4bf84: b1f9 0005 e6fc cmpal 5e6fc <_Per_CPU_Information+0x10>,%a0
4bf8a: 6600 ff58 bnew 4bee4 <_Scheduler_priority_Block+0x2c>
4bf8e: 6000 ff70 braw 4bf00 <_Scheduler_priority_Block+0x48>
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
4bf92: 4280 clrl %d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
4bf94: 23c0 0005 e6fc movel %d0,5e6fc <_Per_CPU_Information+0x10> <== NOT EXECUTED
4bf9a: 60a8 bras 4bf44 <_Scheduler_priority_Block+0x8c> <== NOT EXECUTED
000481b4 <_Scheduler_priority_Schedule>:
*/
void _Scheduler_priority_Schedule(
Scheduler_Control *the_scheduler
)
{
481b4: 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 );
481b8: 3039 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d0
481be: 4840 swap %d0
481c0: 04c0 ff1 %d0
_Bitfield_Find_first_bit( _Priority_Bit_map[major], minor );
481c2: 41f9 0005 e70c lea 5e70c <_Priority_Bit_map>,%a0
481c8: 0280 0000 ffff andil #65535,%d0
481ce: 3230 0a00 movew %a0@(00000000,%d0:l:2),%d1
481d2: 4841 swap %d1
481d4: 04c1 ff1 %d1
_Scheduler_priority_Schedule_body( the_scheduler );
}
481d6: 206e 0008 moveal %fp@(8),%a0
return (_Priority_Bits_index( major ) << 4) +
481da: 0281 0000 ffff andil #65535,%d1
481e0: e988 lsll #4,%d0
481e2: 2050 moveal %a0@,%a0
481e4: 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 ] ) )
481e6: 2200 movel %d0,%d1
481e8: e988 lsll #4,%d0
481ea: e589 lsll #2,%d1
481ec: 9081 subl %d1,%d0
481ee: d1c0 addal %d0,%a0
481f0: 2018 movel %a0@+,%d0
481f2: b1c0 cmpal %d0,%a0
481f4: 670a beqs 48200 <_Scheduler_priority_Schedule+0x4c><== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
481f6: 23c0 0005 e6fc movel %d0,5e6fc <_Per_CPU_Information+0x10>
481fc: 4e5e unlk %fp
481fe: 4e75 rts
Priority_Control index = _Priority_bit_map_Get_highest();
if ( !_Chain_Is_empty( &the_ready_queue[ index ] ) )
return (Thread_Control *) _Chain_First( &the_ready_queue[ index ] );
return NULL;
48200: 4280 clrl %d0 <== NOT EXECUTED
48202: 4e5e unlk %fp <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Schedule_body(
Scheduler_Control *the_scheduler
)
{
_Thread_Heir = _Scheduler_priority_Ready_queue_first(
48204: 23c0 0005 e6fc movel %d0,5e6fc <_Per_CPU_Information+0x10> <== NOT EXECUTED
00048228 <_Scheduler_priority_Thread_scheduler_free>:
void _Scheduler_priority_Thread_scheduler_free (
Scheduler_Control *the_scheduler __attribute__((unused)),
Thread_Control *the_thread
)
{
48228: 4e56 0000 linkw %fp,#0
4822c: 206e 000c moveal %fp@(12),%a0
_Workspace_Free( the_thread->scheduler.priority );
48230: 2d68 008a 0008 movel %a0@(138),%fp@(8)
}
48236: 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 );
48238: 4ef9 0004 9aea jmp 49aea <_Workspace_Free>
...
000482ac <_Scheduler_priority_Unblock>:
void _Scheduler_priority_Unblock (
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
482ac: 4e56 0000 linkw %fp,#0
482b0: 206e 000c moveal %fp@(12),%a0
482b4: 2f0b movel %a3,%sp@-
482b6: 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 );
482b8: 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;
482bc: 2669 0004 moveal %a1@(4),%a3
482c0: 3029 000a movew %a1@(10),%d0
482c4: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
482c6: 2451 moveal %a1@,%a2
482c8: 8081 orl %d1,%d0
482ca: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
482cc: 3029 0008 movew %a1@(8),%d0
482d0: 3239 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d1
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
482d6: 226a 0008 moveal %a2@(8),%a1
482da: 8280 orl %d0,%d1
the_node->next = tail;
tail->previous = the_node;
482dc: 2548 0008 movel %a0,%a2@(8)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
482e0: 588a addql #4,%a2
482e2: 33c1 0005 e708 movew %d1,5e708 <_Priority_Major_bit_map>
* a context switch.
* Pseudo-ISR case:
* Even if the thread isn't preemptible, if the new heir is
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( the_thread->current_priority < _Thread_Heir->current_priority ) {
482e8: 2028 0014 movel %a0@(20),%d0
482ec: 208a movel %a2,%a0@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
482ee: 2149 0004 movel %a1,%a0@(4)
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
482f2: 2288 movel %a0,%a1@
482f4: 2279 0005 e6fc moveal 5e6fc <_Per_CPU_Information+0x10>,%a1
482fa: b0a9 0014 cmpl %a1@(20),%d0
482fe: 641a bccs 4831a <_Scheduler_priority_Unblock+0x6e>
_Thread_Heir = the_thread;
48300: 23c8 0005 e6fc movel %a0,5e6fc <_Per_CPU_Information+0x10>
if ( _Thread_Executing->is_preemptible ||
48306: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
4830c: 4a28 0074 tstb %a0@(116)
48310: 6710 beqs 48322 <_Scheduler_priority_Unblock+0x76>
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
48312: 7001 moveq #1,%d0
48314: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18>
_Scheduler_priority_Unblock_body(the_scheduler, the_thread);
}
4831a: 245f moveal %sp@+,%a2
4831c: 265f moveal %sp@+,%a3
4831e: 4e5e unlk %fp
48320: 4e75 rts
* Even if the thread isn't preemptible, if the new heir is
* a pseudo-ISR system task, we need to do a context switch.
*/
if ( the_thread->current_priority < _Thread_Heir->current_priority ) {
_Thread_Heir = the_thread;
if ( _Thread_Executing->is_preemptible ||
48322: 4a80 tstl %d0
48324: 66f4 bnes 4831a <_Scheduler_priority_Unblock+0x6e><== ALWAYS TAKEN
the_thread->current_priority == 0 )
_Thread_Dispatch_necessary = true;
48326: 7001 moveq #1,%d0 <== NOT EXECUTED
48328: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18> <== NOT EXECUTED
4832e: 60ea bras 4831a <_Scheduler_priority_Unblock+0x6e><== NOT EXECUTED
00048330 <_Scheduler_priority_Yield>:
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
48330: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
48334: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
*/
void _Scheduler_priority_Yield(
Scheduler_Control *the_scheduler __attribute__((unused))
)
{
4833a: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
_ISR_Disable( level );
4833e: 243c 0000 0700 movel #1792,%d2 <== NOT EXECUTED
48344: 2002 movel %d2,%d0 <== NOT EXECUTED
ISR_Level level;
Thread_Control *executing;
Chain_Control *ready;
executing = _Thread_Executing;
ready = executing->scheduler.priority->ready_chain;
48346: 2268 008a moveal %a0@(138),%a1 <== NOT EXECUTED
4834a: 2251 moveal %a1@,%a1 <== NOT EXECUTED
_ISR_Disable( level );
4834c: 40c1 movew %sr,%d1 <== NOT EXECUTED
4834e: 8081 orl %d1,%d0 <== NOT EXECUTED
48350: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( !_Chain_Has_only_one_node( ready ) ) {
48352: 2029 0008 movel %a1@(8),%d0 <== NOT EXECUTED
48356: b091 cmpl %a1@,%d0 <== NOT EXECUTED
48358: 6750 beqs 483aa <_Scheduler_priority_Yield+0x7a> <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4835a: 2850 moveal %a0@,%a4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4835c: 2009 movel %a1,%d0 <== NOT EXECUTED
4835e: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
48360: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
48364: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
48368: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
4836c: 268c movel %a4,%a3@ <== NOT EXECUTED
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4836e: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
48372: 2080 movel %d0,%a0@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
48374: 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;
48378: 2488 movel %a0,%a2@ <== NOT EXECUTED
_Chain_Extract_unprotected( &executing->Object.Node );
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
4837a: 46c1 movew %d1,%sr <== NOT EXECUTED
4837c: 8481 orl %d1,%d2 <== NOT EXECUTED
4837e: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
48380: b1f9 0005 e6fc cmpal 5e6fc <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
48386: 6712 beqs 4839a <_Scheduler_priority_Yield+0x6a> <== NOT EXECUTED
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
48388: 7001 moveq #1,%d0 <== NOT EXECUTED
4838a: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18> <== NOT EXECUTED
_ISR_Enable( level );
48390: 46c1 movew %d1,%sr <== NOT EXECUTED
}
48392: 4cd7 1c04 moveml %sp@,%d2/%a2-%a4 <== NOT EXECUTED
48396: 4e5e unlk %fp <== NOT EXECUTED
48398: 4e75 rts <== NOT EXECUTED
_Chain_Append_unprotected( ready, &executing->Object.Node );
_ISR_Flash( level );
if ( _Thread_Is_heir( executing ) )
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
4839a: 23d1 0005 e6fc movel %a1@,5e6fc <_Per_CPU_Information+0x10><== NOT EXECUTED
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
_Thread_Dispatch_necessary = true;
483a0: 7001 moveq #1,%d0 <== NOT EXECUTED
483a2: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18> <== NOT EXECUTED
483a8: 60e6 bras 48390 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
if ( _Thread_Is_heir( executing ) )
_Thread_Heir = (Thread_Control *) _Chain_First( ready );
_Thread_Dispatch_necessary = true;
}
else if ( !_Thread_Is_heir( executing ) )
483aa: b1f9 0005 e6fc cmpal 5e6fc <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
483b0: 67de beqs 48390 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
483b2: 7001 moveq #1,%d0 <== NOT EXECUTED
483b4: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18> <== NOT EXECUTED
483ba: 60d4 bras 48390 <_Scheduler_priority_Yield+0x60> <== NOT EXECUTED
0004665e <_Semaphore_Translate_core_semaphore_return_code>:
*/
#if defined(RTEMS_DEBUG)
if ( status > CORE_SEMAPHORE_STATUS_LAST )
return RTEMS_INTERNAL_ERROR;
#endif
return _Semaphore_Translate_core_semaphore_return_code_[status];
4665e: 41f9 0005 bf8e lea 5bf8e <_Semaphore_Translate_core_semaphore_return_code_>,%a0<== NOT EXECUTED
};
rtems_status_code _Semaphore_Translate_core_semaphore_return_code (
uint32_t status
)
{
46664: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( status > CORE_SEMAPHORE_STATUS_LAST )
return RTEMS_INTERNAL_ERROR;
#endif
return _Semaphore_Translate_core_semaphore_return_code_[status];
}
46668: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4666c: 4e5e unlk %fp <== NOT EXECUTED
4666e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00047798 <_TOD_Get_uptime_as_timespec>:
*/
void _TOD_Get_uptime_as_timespec(
struct timespec *uptime
)
{
47798: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Timestamp_Control uptime_ts;
/* assume time checked for NULL by caller */
_TOD_Get_uptime( &uptime_ts );
4779c: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
477a0: 4eb9 0004 bfac jsr 4bfac <_TOD_Get_uptime> <== NOT EXECUTED
_Timestamp_To_timespec( &uptime_ts, uptime );
477a6: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
477aa: 588f addql #4,%sp <== NOT EXECUTED
477ac: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
477b0: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
}
477b4: 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 );
477b6: 2080 movel %d0,%a0@ <== NOT EXECUTED
477b8: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
}
...
00048d18 <_TOD_Set>:
*/
void _TOD_Set(
const struct timespec *time
)
{
48d18: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48d1c: 2039 0006 8ac8 movel 68ac8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
48d22: 5280 addql #1,%d0 <== NOT EXECUTED
48d24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48d26: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
48d2a: 23c0 0006 8ac8 movel %d0,68ac8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
long seconds;
_Thread_Disable_dispatch();
_TOD_Deactivate();
seconds = _TOD_Seconds_since_epoch();
48d30: 2039 0006 8b72 movel 68b72 <_TOD_Now>,%d0 <== NOT EXECUTED
if ( time->tv_sec < seconds )
48d36: 2212 movel %a2@,%d1 <== NOT EXECUTED
48d38: b280 cmpl %d0,%d1 <== NOT EXECUTED
48d3a: 6d38 blts 48d74 <_TOD_Set+0x5c> <== NOT EXECUTED
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
_Watchdog_Adjust( &_Watchdog_Seconds_chain, direction, units );
48d3c: 9280 subl %d0,%d1 <== NOT EXECUTED
48d3e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
48d40: 42a7 clrl %sp@- <== NOT EXECUTED
48d42: 4879 0006 8b9c pea 68b9c <_Watchdog_Seconds_chain> <== NOT EXECUTED
48d48: 4eb9 0004 b418 jsr 4b418 <_Watchdog_Adjust> <== NOT EXECUTED
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds );
/* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec );
48d4e: 23d2 0006 8b72 movel %a2@,68b72 <_TOD_Now> <== NOT EXECUTED
48d54: 588a addql #4,%a2 <== NOT EXECUTED
48d56: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48d5a: 23d2 0006 8b76 movel %a2@,68b76 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48d60: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d64: 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;
48d66: 7001 moveq #1,%d0 <== NOT EXECUTED
48d68: 13c0 0006 8ad8 moveb %d0,68ad8 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48d6e: 4ef9 0004 a3b6 jmp 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
48d74: 9081 subl %d1,%d0 <== NOT EXECUTED
48d76: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48d78: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
48d7c: 4879 0006 8b9c pea 68b9c <_Watchdog_Seconds_chain> <== NOT EXECUTED
48d82: 4eb9 0004 b418 jsr 4b418 <_Watchdog_Adjust> <== NOT EXECUTED
_Watchdog_Adjust_seconds( WATCHDOG_BACKWARD, seconds - time->tv_sec );
else
_Watchdog_Adjust_seconds( WATCHDOG_FORWARD, time->tv_sec - seconds );
/* POSIX format TOD (timespec) */
_Timestamp_Set( &_TOD_Now, time->tv_sec, time->tv_nsec );
48d88: 23d2 0006 8b72 movel %a2@,68b72 <_TOD_Now> <== NOT EXECUTED
48d8e: 588a addql #4,%a2 <== NOT EXECUTED
48d90: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
48d94: 23d2 0006 8b76 movel %a2@,68b76 <_TOD_Now+0x4> <== NOT EXECUTED
_TOD_Is_set = true;
_TOD_Activate();
_Thread_Enable_dispatch();
}
48d9a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48d9e: 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;
48da0: 7001 moveq #1,%d0 <== NOT EXECUTED
48da2: 13c0 0006 8ad8 moveb %d0,68ad8 <_TOD_Is_set> <== NOT EXECUTED
_TOD_Activate();
_Thread_Enable_dispatch();
48da8: 4ef9 0004 a3b6 jmp 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
...
000473dc <_TOD_Tickle_ticks>:
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
473dc: 4e56 ffec linkw %fp,#-20
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
473e0: 2239 0005 cd20 movel 5cd20 <Configuration+0xc>,%d1
*
* Output parameters: NONE
*/
void _TOD_Tickle_ticks( void )
{
473e6: 48d7 040c moveml %d2-%d3/%a2,%sp@
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
473ea: 240e movel %fp,%d2
473ec: 5182 subql #8,%d2
{
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
473ee: 263c 0000 03e8 movel #1000,%d3
473f4: 4c03 1800 mulsl %d3,%d1
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
473f8: 45f9 0004 94b4 lea 494b4 <_Timespec_Add_to>,%a2
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
473fe: 2039 0005 e660 movel 5e660 <_Watchdog_Ticks_since_boot>,%d0
47404: 5280 addql #1,%d0
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
47406: 2f02 movel %d2,%sp@-
47408: 4879 0005 e5b2 pea 5e5b2 <_TOD_Uptime>
{
Timestamp_Control tick;
uint32_t seconds;
/* Convert the tick quantum to a timestamp */
_Timestamp_Set( &tick, 0, rtems_configuration_get_nanoseconds_per_tick() );
4740e: 2d41 fffc movel %d1,%fp@(-4)
47412: 42ae fff8 clrl %fp@(-8)
/* Update the counter of ticks since boot */
_Watchdog_Ticks_since_boot += 1;
47416: 23c0 0005 e660 movel %d0,5e660 <_Watchdog_Ticks_since_boot>
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
4741c: 4e92 jsr %a2@
/* we do not care how much the uptime changed */
/* Update the timespec format TOD */
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
4741e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47420: 4879 0005 e5e2 pea 5e5e2 <_TOD_Now> <== NOT EXECUTED
47426: 4e92 jsr %a2@ <== NOT EXECUTED
while ( seconds ) {
47428: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
/* Update the timespec format uptime */
_Timestamp_Add_to( &_TOD_Uptime, &tick );
/* we do not care how much the uptime changed */
/* Update the timespec format TOD */
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
4742c: 2400 movel %d0,%d2 <== NOT EXECUTED
while ( seconds ) {
4742e: 6716 beqs 47446 <_TOD_Tickle_ticks+0x6a> <== NOT EXECUTED
47430: 45f9 0004 99ec lea 499ec <_Watchdog_Tickle>,%a2 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_seconds( void )
{
_Watchdog_Tickle( &_Watchdog_Seconds_chain );
47436: 4879 0005 e60c pea 5e60c <_Watchdog_Seconds_chain> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
4743c: 5382 subql #1,%d2 <== NOT EXECUTED
4743e: 4e92 jsr %a2@ <== NOT EXECUTED
_Timestamp_Add_to( &_TOD_Uptime, &tick );
/* we do not care how much the uptime changed */
/* Update the timespec format TOD */
seconds = _Timestamp_Add_to_at_tick( &_TOD_Now, &tick );
while ( seconds ) {
47440: 588f addql #4,%sp <== NOT EXECUTED
47442: 4a82 tstl %d2 <== NOT EXECUTED
47444: 66f0 bnes 47436 <_TOD_Tickle_ticks+0x5a> <== NOT EXECUTED
_Watchdog_Tickle_seconds();
seconds--;
}
}
47446: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
4744c: 4e5e unlk %fp <== NOT EXECUTED
0004727c <_TOD_To_seconds>:
*/
uint32_t _TOD_To_seconds(
const rtems_time_of_day *the_tod
)
{
4727c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
47280: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
47284: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
47288: 2610 movel %a0@,%d3 <== NOT EXECUTED
4728a: 7403 moveq #3,%d2 <== NOT EXECUTED
)
{
uint32_t time;
uint32_t year_mod_4;
time = the_tod->day - 1;
4728c: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
47290: 5380 subql #1,%d0 <== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
47292: c483 andl %d3,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
47294: 6774 beqs 4730a <_TOD_To_seconds+0x8e> <== NOT EXECUTED
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
47296: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
4729a: 43f9 0005 e61a lea 5e61a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472a0: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
472a6: 45f9 0005 e64e lea 5e64e <_TOD_Days_since_last_leap_year>,%a2<== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
472ac: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED
472b0: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
472b6: 2241 moveal %d1,%a1 <== NOT EXECUTED
472b8: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472ba: 2003 movel %d3,%d0 <== NOT EXECUTED
472bc: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED
472c2: e488 lsrl #2,%d0 <== NOT EXECUTED
472c4: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
472c8: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
472cc: 2601 movel %d1,%d3 <== NOT EXECUTED
472ce: ed89 lsll #6,%d1 <== NOT EXECUTED
472d0: e58b lsll #2,%d3 <== NOT EXECUTED
472d2: 9283 subl %d3,%d1 <== NOT EXECUTED
472d4: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
472d8: 4283 clrl %d3 <== NOT EXECUTED
472da: 3632 2a00 movew %a2@(00000000,%d2:l:2),%d3 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
472de: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
472e0: d083 addl %d3,%d0 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
472e2: 263c 0001 5180 movel #86400,%d3 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
472e8: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
472ea: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
472ee: e58a lsll #2,%d2 <== NOT EXECUTED
472f0: ed89 lsll #6,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
472f2: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
472f6: 9282 subl %d2,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
472f8: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
472fe: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
47300: d081 addl %d1,%d0 <== NOT EXECUTED
47302: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED
47306: 4e5e unlk %fp <== NOT EXECUTED
47308: 4e75 rts <== NOT EXECUTED
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
4730a: 2228 0004 movel %a0@(4),%d1 <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
4730e: 43f9 0005 e61a lea 5e61a <_TOD_Days_to_date>,%a1 <== NOT EXECUTED
time = the_tod->day - 1;
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
47314: 0681 0000 000d addil #13,%d1 <== NOT EXECUTED
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
4731a: 283c 0000 05b5 movel #1461,%d4 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
47320: 45f9 0005 e64e lea 5e64e <_TOD_Days_since_last_leap_year>,%a2<== NOT EXECUTED
year_mod_4 = the_tod->year & 3;
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
47326: 3231 1a00 movew %a1@(00000000,%d1:l:2),%d1 <== NOT EXECUTED
4732a: 0281 0000 ffff andil #65535,%d1 <== NOT EXECUTED
47330: 2241 moveal %d1,%a1 <== NOT EXECUTED
47332: d3c0 addal %d0,%a1 <== NOT EXECUTED
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
47334: 2003 movel %d3,%d0 <== NOT EXECUTED
47336: 0680 ffff f83c addil #-1988,%d0 <== NOT EXECUTED
4733c: e488 lsrl #2,%d0 <== NOT EXECUTED
4733e: 4c04 0800 mulsl %d4,%d0 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
47342: 2228 000c movel %a0@(12),%d1 <== NOT EXECUTED
47346: 2601 movel %d1,%d3 <== NOT EXECUTED
47348: ed89 lsll #6,%d1 <== NOT EXECUTED
4734a: e58b lsll #2,%d3 <== NOT EXECUTED
4734c: 9283 subl %d3,%d1 <== NOT EXECUTED
4734e: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
47352: 4283 clrl %d3 <== NOT EXECUTED
47354: 3632 2a00 movew %a2@(00000000,%d2:l:2),%d3 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
47358: 2401 movel %d1,%d2 <== NOT EXECUTED
if ( year_mod_4 == 0 )
time += _TOD_Days_to_date[ 1 ][ the_tod->month ];
else
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
4735a: d083 addl %d3,%d0 <== NOT EXECUTED
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
4735c: 263c 0001 5180 movel #86400,%d3 <== NOT EXECUTED
time += _TOD_Days_to_date[ 0 ][ the_tod->month ];
time += ( (the_tod->year - TOD_BASE_YEAR) / 4 ) *
( (TOD_DAYS_PER_YEAR * 4) + 1);
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
47362: d089 addl %a1,%d0 <== NOT EXECUTED
time *= TOD_SECONDS_PER_DAY;
47364: 4c03 0800 mulsl %d3,%d0 <== NOT EXECUTED
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
* TOD_SECONDS_PER_MINUTE;
47368: e58a lsll #2,%d2 <== NOT EXECUTED
4736a: ed89 lsll #6,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
4736c: 2068 0014 moveal %a0@(20),%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
47370: 9282 subl %d2,%d1 <== NOT EXECUTED
time += _TOD_Days_since_last_leap_year[ year_mod_4 ];
time *= TOD_SECONDS_PER_DAY;
time += ((the_tod->hour * TOD_MINUTES_PER_HOUR) + the_tod->minute)
47372: d1fc 21da e500 addal #567993600,%a0 <== NOT EXECUTED
* TOD_SECONDS_PER_MINUTE;
time += the_tod->second;
47378: d288 addl %a0,%d1 <== NOT EXECUTED
time += TOD_SECONDS_1970_THROUGH_1988;
return( time );
}
4737a: d081 addl %d1,%d0 <== NOT EXECUTED
4737c: 4cd7 041c moveml %sp@,%d2-%d4/%a2 <== NOT EXECUTED
47380: 4e5e unlk %fp <== NOT EXECUTED
00047384 <_TOD_Validate>:
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
47384: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47388: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
4738c: 2039 0005 f4e0 movel 5f4e0 <Configuration+0xc>,%d0 <== NOT EXECUTED
*/
bool _TOD_Validate(
const rtems_time_of_day *the_tod
)
{
47392: 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) ||
47394: 4a88 tstl %a0 <== NOT EXECUTED
47396: 6762 beqs 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
)
{
uint32_t days_in_month;
uint32_t ticks_per_second;
ticks_per_second = TOD_MICROSECONDS_PER_SECOND /
47398: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
4739e: 4c40 2002 remul %d0,%d2,%d2 <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
if ((!the_tod) ||
473a2: b4a8 0018 cmpl %a0@(24),%d2 <== NOT EXECUTED
473a6: 6352 blss 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->ticks >= ticks_per_second) ||
473a8: 703b moveq #59,%d0 <== NOT EXECUTED
473aa: b0a8 0014 cmpl %a0@(20),%d0 <== NOT EXECUTED
473ae: 654a bcss 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
473b0: b0a8 0010 cmpl %a0@(16),%d0 <== NOT EXECUTED
473b4: 6544 bcss 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
473b6: 7217 moveq #23,%d1 <== NOT EXECUTED
473b8: b2a8 000c cmpl %a0@(12),%d1 <== NOT EXECUTED
473bc: 653c bcss 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
473be: 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) ||
473c2: 6736 beqs 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month == 0) ||
473c4: 740c moveq #12,%d2 <== NOT EXECUTED
473c6: b480 cmpl %d0,%d2 <== NOT EXECUTED
473c8: 6530 bcss 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
473ca: 2210 movel %a0@,%d1 <== NOT EXECUTED
(the_tod->ticks >= ticks_per_second) ||
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
473cc: 0c81 0000 07c3 cmpil #1987,%d1 <== NOT EXECUTED
473d2: 6326 blss 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
473d4: 2068 0008 moveal %a0@(8),%a0 <== NOT EXECUTED
(the_tod->second >= TOD_SECONDS_PER_MINUTE) ||
(the_tod->minute >= TOD_MINUTES_PER_HOUR) ||
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
473d8: 4a88 tstl %a0 <== NOT EXECUTED
473da: 671e beqs 473fa <_TOD_Validate+0x76> <== NOT EXECUTED
(the_tod->day == 0) )
return false;
if ( (the_tod->year % 4) == 0 )
473dc: 143c 0003 moveb #3,%d2 <== NOT EXECUTED
473e0: c282 andl %d2,%d1 <== NOT EXECUTED
473e2: 661e bnes 47402 <_TOD_Validate+0x7e> <== NOT EXECUTED
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
473e4: 43f9 0005 e656 lea 5e656 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED
473ea: 2031 0c34 movel %a1@(00000034,%d0:l:4),%d0 <== NOT EXECUTED
* false - if the the_tod is invalid
*
* NOTE: This routine only works for leap-years through 2099.
*/
bool _TOD_Validate(
473ee: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
473f0: 53c0 sls %d0 <== NOT EXECUTED
473f2: 4480 negl %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
473f4: 241f movel %sp@+,%d2 <== NOT EXECUTED
473f6: 4e5e unlk %fp <== NOT EXECUTED
473f8: 4e75 rts <== NOT EXECUTED
473fa: 241f movel %sp@+,%d2 <== NOT EXECUTED
473fc: 4e5e unlk %fp <== NOT EXECUTED
(the_tod->hour >= TOD_HOURS_PER_DAY) ||
(the_tod->month == 0) ||
(the_tod->month > TOD_MONTHS_PER_YEAR) ||
(the_tod->year < TOD_BASE_YEAR) ||
(the_tod->day == 0) )
return false;
473fe: 4200 clrb %d0 <== NOT EXECUTED
if ( the_tod->day > days_in_month )
return false;
return true;
}
47400: 4e75 rts <== NOT EXECUTED
return false;
if ( (the_tod->year % 4) == 0 )
days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];
else
days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];
47402: 43f9 0005 e656 lea 5e656 <_TOD_Days_per_month>,%a1 <== NOT EXECUTED
47408: 2031 0c00 movel %a1@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
* false - if the the_tod is invalid
*
* NOTE: This routine only works for leap-years through 2099.
*/
bool _TOD_Validate(
4740c: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
4740e: 53c0 sls %d0 <== NOT EXECUTED
47410: 4480 negl %d0 <== NOT EXECUTED
47412: 60e0 bras 473f4 <_TOD_Validate+0x70> <== NOT EXECUTED
00048424 <_Thread_Change_priority>:
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
48424: 4e56 ffec linkw %fp,#-20
48428: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
4842c: 246e 0008 moveal %fp@(8),%a2
*/
/*
* Save original state
*/
original_state = the_thread->current_state;
48430: 262a 0010 movel %a2@(16),%d3
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
48434: 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 );
48438: 2f0a movel %a2,%sp@-
void _Thread_Change_priority(
Thread_Control *the_thread,
Priority_Control new_priority,
bool prepend_it
)
{
4843a: 182e 0013 moveb %fp@(19),%d4
/*
* Set a transient state for the thread so it is pulled off the Ready chains.
* This will prevent it from being scheduled no matter what happens in an
* ISR.
*/
_Thread_Set_transient( the_thread );
4843e: 4eb9 0004 924c jsr 4924c <_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 )
48444: 588f addql #4,%sp
48446: b4aa 0014 cmpl %a2@(20),%d2
4844a: 670c beqs 48458 <_Thread_Change_priority+0x34>
_Thread_Set_priority( the_thread, new_priority );
4844c: 2f02 movel %d2,%sp@-
4844e: 2f0a movel %a2,%sp@-
48450: 4eb9 0004 91d4 jsr 491d4 <_Thread_Set_priority>
48456: 508f addql #8,%sp
_ISR_Disable( level );
48458: 203c 0000 0700 movel #1792,%d0
4845e: 40c2 movew %sr,%d2
48460: 8082 orl %d2,%d0
48462: 46c0 movew %d0,%sr
/*
* If the thread has more than STATES_TRANSIENT set, then it is blocked,
* If it is blocked on a thread queue, then we need to requeue it.
*/
state = the_thread->current_state;
48464: 202a 0010 movel %a2@(16),%d0
if ( state != STATES_TRANSIENT ) {
48468: 7204 moveq #4,%d1
4846a: b280 cmpl %d0,%d1
4846c: 6738 beqs 484a6 <_Thread_Change_priority+0x82>
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
4846e: 44c3 movew %d3,%ccr
48470: 6708 beqs 4847a <_Thread_Change_priority+0x56> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
48472: 72fb moveq #-5,%d1
48474: c280 andl %d0,%d1
48476: 2541 0010 movel %d1,%a2@(16)
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
4847a: 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);
4847c: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( state ) ) {
48482: 660a bnes 4848e <_Thread_Change_priority+0x6a>
if ( !_Thread_Is_executing_also_the_heir() &&
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
_ISR_Enable( level );
}
48484: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4848a: 4e5e unlk %fp
4848c: 4e75 rts
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) )
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
_ISR_Enable( level );
if ( _States_Is_waiting_on_thread_queue( state ) ) {
_Thread_queue_Requeue( the_thread->Wait.queue, the_thread );
4848e: 2d4a 000c movel %a2,%fp@(12)
48492: 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 );
}
48498: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4849e: 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 );
484a0: 4ef9 0004 9128 jmp 49128 <_Thread_queue_Requeue>
}
return;
}
/* Only clear the transient state if it wasn't set already */
if ( ! _States_Is_transient( original_state ) ) {
484a6: 44c3 movew %d3,%ccr
484a8: 673c beqs 484e6 <_Thread_Change_priority+0xc2> <== NEVER TAKEN
* Ready Queue with interrupts off.
*
* FIXME: hard-coded for priority scheduling. Might be ok since this
* function is specific to priority scheduling?
*/
the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
484aa: 42aa 0010 clrl %a2@(16)
if ( prepend_it )
484ae: 4a04 tstb %d4
484b0: 6778 beqs 4852a <_Thread_Change_priority+0x106>
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue_first(
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
484b2: 206a 008a moveal %a2@(138),%a0
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
484b6: 2668 0004 moveal %a0@(4),%a3
484ba: 3028 000a movew %a0@(10),%d0
484be: 3213 movew %a3@,%d1
_Chain_Prepend_unprotected( the_thread->scheduler.priority->ready_chain,
484c0: 2250 moveal %a0@,%a1
484c2: 8081 orl %d1,%d0
484c4: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
484c6: 3028 0008 movew %a0@(8),%d0
484ca: 3239 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d1
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
484d0: 2051 moveal %a1@,%a0
484d2: 8081 orl %d1,%d0
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
484d4: 2549 0004 movel %a1,%a2@(4)
484d8: 33c0 0005 e708 movew %d0,5e708 <_Priority_Major_bit_map>
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
before_node->previous = the_node;
484de: 214a 0004 movel %a2,%a0@(4)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
484e2: 228a movel %a2,%a1@
the_node->next = before_node;
484e4: 2488 movel %a0,%a2@
_Scheduler_priority_Ready_queue_enqueue_first( the_thread );
else
_Scheduler_priority_Ready_queue_enqueue( the_thread );
}
_ISR_Flash( level );
484e6: 203c 0000 0700 movel #1792,%d0
484ec: 46c2 movew %d2,%sr
484ee: 8082 orl %d2,%d0
484f0: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule(
Scheduler_Control *the_scheduler
)
{
the_scheduler->Operations.schedule( the_scheduler );
484f2: 4879 0005 e5be pea 5e5be <_Scheduler>
484f8: 2079 0005 e5c2 moveal 5e5c2 <_Scheduler+0x4>,%a0
484fe: 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 );
48500: 2079 0005 e6f8 moveal 5e6f8 <_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() &&
48506: 588f addql #4,%sp
48508: b1f9 0005 e6fc cmpal 5e6fc <_Per_CPU_Information+0x10>,%a0
4850e: 670e beqs 4851e <_Thread_Change_priority+0xfa>
48510: 4a28 0074 tstb %a0@(116)
48514: 6708 beqs 4851e <_Thread_Change_priority+0xfa> <== NEVER TAKEN
_Thread_Executing->is_preemptible )
_Thread_Dispatch_necessary = true;
48516: 7001 moveq #1,%d0
48518: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18>
_ISR_Enable( level );
4851e: 46c2 movew %d2,%sr
}
48520: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
48526: 4e5e unlk %fp
48528: 4e75 rts
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_enqueue(
Thread_Control *the_thread
)
{
_Priority_bit_map_Add( &the_thread->scheduler.priority->Priority_map );
4852a: 206a 008a moveal %a2@(138),%a0
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Add (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor |= the_priority_map->ready_minor;
4852e: 2668 0004 moveal %a0@(4),%a3
48532: 3028 000a movew %a0@(10),%d0
48536: 3213 movew %a3@,%d1
_Chain_Append_unprotected( the_thread->scheduler.priority->ready_chain,
48538: 2250 moveal %a0@,%a1
4853a: 8081 orl %d1,%d0
4853c: 3680 movew %d0,%a3@
_Priority_Major_bit_map |= the_priority_map->ready_major;
4853e: 3028 0008 movew %a0@(8),%d0
48542: 3239 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d1
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
48548: 2069 0008 moveal %a1@(8),%a0
4854c: 8081 orl %d1,%d0
the_node->next = tail;
tail->previous = the_node;
4854e: 234a 0008 movel %a2,%a1@(8)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
48552: 5889 addql #4,%a1
48554: 33c0 0005 e708 movew %d0,5e708 <_Priority_Major_bit_map>
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
4855a: 2548 0004 movel %a0,%a2@(4)
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4855e: 2489 movel %a1,%a2@
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
48560: 208a movel %a2,%a0@
48562: 6082 bras 484e6 <_Thread_Change_priority+0xc2>
00048564 <_Thread_Clear_state>:
)
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
48564: 203c 0000 0700 movel #1792,%d0
void _Thread_Clear_state(
Thread_Control *the_thread,
States_Control state
)
{
4856a: 4e56 0000 linkw %fp,#0
4856e: 206e 0008 moveal %fp@(8),%a0
48572: 2f03 movel %d3,%sp@-
48574: 2f02 movel %d2,%sp@-
48576: 242e 000c movel %fp@(12),%d2
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4857a: 40c3 movew %sr,%d3
4857c: 8083 orl %d3,%d0
4857e: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
48580: 2228 0010 movel %a0@(16),%d1
if ( current_state & state ) {
48584: 2002 movel %d2,%d0
48586: c081 andl %d1,%d0
48588: 670c beqs 48596 <_Thread_Clear_state+0x32> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
4858a: 2002 movel %d2,%d0
4858c: 4680 notl %d0
4858e: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear( state, current_state );
48590: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
48594: 670e beqs 485a4 <_Thread_Clear_state+0x40> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
48596: 46c3 movew %d3,%sr <== NOT EXECUTED
}
48598: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4859c: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
485a0: 4e5e unlk %fp <== NOT EXECUTED
485a2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.unblock( the_scheduler, the_thread );
485a4: 2f08 movel %a0,%sp@-
485a6: 4879 0005 e5be pea 5e5be <_Scheduler>
485ac: 2079 0005 e5ce moveal 5e5ce <_Scheduler+0x10>,%a0
485b2: 4e90 jsr %a0@
485b4: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread);
}
}
_ISR_Enable( level );
485b6: 46c3 movew %d3,%sr
}
485b8: 242e fff8 movel %fp@(-8),%d2
485bc: 262e fffc movel %fp@(-4),%d3
485c0: 4e5e unlk %fp <== NOT EXECUTED
000485c4 <_Thread_Close>:
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
485c4: 4280 clrl %d0
void _Thread_Close(
Objects_Information *information,
Thread_Control *the_thread
)
{
485c6: 4e56 0000 linkw %fp,#0
485ca: 2f0b movel %a3,%sp@-
485cc: 266e 0008 moveal %fp@(8),%a3
485d0: 2f0a movel %a2,%sp@-
485d2: 246e 000c moveal %fp@(12),%a2
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
485d6: 206b 0018 moveal %a3@(24),%a0
RTEMS_INLINE_ROUTINE void _Objects_Invalidate_Id(
Objects_Information *information,
Objects_Control *the_object
)
{
_Objects_Set_local_object(
485da: 302a 000a movew %a2@(10),%d0
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
485de: 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;
485e2: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
485e8: 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 );
485ea: 2f0a movel %a2,%sp@-
485ec: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
485f2: 4eb9 0004 9738 jsr 49738 <_User_extensions_Thread_delete>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
485f8: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
485fe: 5280 addql #1,%d0
48600: 23c0 0005 e538 movel %d0,5e538 <_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 );
48606: 2f0a movel %a2,%sp@-
48608: 2f0b movel %a3,%sp@-
4860a: 4eb9 0004 795c jsr 4795c <_Objects_Close>
/*
* By setting the dormant state, the thread will not be considered
* for scheduling when we remove any blocking states.
*/
_Thread_Set_state( the_thread, STATES_DORMANT );
48610: 4878 0001 pea 1 <ADD>
48614: 2f0a movel %a2,%sp@-
48616: 4eb9 0004 91fc jsr 491fc <_Thread_Set_state>
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
4861c: 2f0a movel %a2,%sp@-
4861e: 4eb9 0004 9024 jsr 49024 <_Thread_queue_Extract_with_proxy>
48624: 4fef 0018 lea %sp@(24),%sp
48628: 4a00 tstb %d0
4862a: 6608 bnes 48634 <_Thread_Close+0x70> <== NEVER TAKEN
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4862c: 7002 moveq #2,%d0
4862e: b0aa 0050 cmpl %a2@(80),%d0
48632: 6768 beqs 4869c <_Thread_Close+0xd8> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE void _Scheduler_Thread_scheduler_free(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return the_scheduler->Operations.scheduler_free( the_scheduler, the_thread );
48634: 2f0a movel %a2,%sp@-
48636: 4879 0005 e5be pea 5e5be <_Scheduler>
4863c: 2079 0005 e5d6 moveal 5e5d6 <_Scheduler+0x18>,%a0
48642: 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 ) )
48644: 508f addql #8,%sp
48646: b5f9 0005 e5ba cmpal 5e5ba <_Thread_Allocated_fp>,%a2
4864c: 6746 beqs 48694 <_Thread_Close+0xd0> <== NEVER TAKEN
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
if ( the_thread->Start.fp_context )
4864e: 202a 00b8 movel %a2@(184),%d0
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
_Thread_Deallocate_fp();
#endif
the_thread->fp_context = NULL;
48652: 42aa 00f4 clrl %a2@(244)
if ( the_thread->Start.fp_context )
48656: 4a80 tstl %d0
48658: 670a beqs 48664 <_Thread_Close+0xa0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->Start.fp_context );
4865a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4865c: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48662: 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 );
48664: 2f0a movel %a2,%sp@-
48666: 4eb9 0004 9334 jsr 49334 <_Thread_Stack_Free>
the_thread->Start.stack = NULL;
if ( the_thread->extensions )
4866c: 202a 0104 movel %a2@(260),%d0
48670: 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;
48672: 42aa 00bc clrl %a2@(188)
if ( the_thread->extensions )
48676: 4a80 tstl %d0
48678: 670a beqs 48684 <_Thread_Close+0xc0> <== ALWAYS TAKEN
(void) _Workspace_Free( the_thread->extensions );
4867a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4867c: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48682: 588f addql #4,%sp <== NOT EXECUTED
the_thread->extensions = NULL;
48684: 42aa 0104 clrl %a2@(260)
}
48688: 246e fff8 moveal %fp@(-8),%a2
4868c: 266e fffc moveal %fp@(-4),%a3
48690: 4e5e unlk %fp
48692: 4e75 rts
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE void _Thread_Deallocate_fp( void )
{
_Thread_Allocated_fp = NULL;
48694: 42b9 0005 e5ba clrl 5e5ba <_Thread_Allocated_fp> <== NOT EXECUTED
4869a: 60b2 bras 4864e <_Thread_Close+0x8a> <== NOT EXECUTED
*/
_Thread_Set_state( the_thread, STATES_DORMANT );
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
if ( _Watchdog_Is_active( &the_thread->Timer ) )
(void) _Watchdog_Remove( &the_thread->Timer );
4869c: 486a 0048 pea %a2@(72) <== NOT EXECUTED
486a0: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove> <== NOT EXECUTED
486a6: 588f addql #4,%sp <== NOT EXECUTED
486a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
486aa: 4879 0005 e5be pea 5e5be <_Scheduler> <== NOT EXECUTED
486b0: 2079 0005 e5d6 moveal 5e5d6 <_Scheduler+0x18>,%a0 <== NOT EXECUTED
486b6: 4e90 jsr %a0@ <== NOT EXECUTED
/*
* The thread might have been FP. So deal with that.
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( _Thread_Is_allocated_fp( the_thread ) )
486b8: 508f addql #8,%sp <== NOT EXECUTED
486ba: b5f9 0005 e5ba cmpal 5e5ba <_Thread_Allocated_fp>,%a2 <== NOT EXECUTED
486c0: 668c bnes 4864e <_Thread_Close+0x8a> <== NOT EXECUTED
486c2: 60d0 bras 48694 <_Thread_Close+0xd0> <== NOT EXECUTED
00048774 <_Thread_Delay_ended>:
void _Thread_Delay_ended(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
48774: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
48778: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4877c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
48780: 4eb9 0004 8940 jsr 48940 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48786: 508f addql #8,%sp <== NOT EXECUTED
48788: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4878c: 661e bnes 487ac <_Thread_Delay_ended+0x38> <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
case OBJECTS_REMOTE: /* impossible */
#endif
break;
case OBJECTS_LOCAL:
_Thread_Clear_state(
4878e: 2f3c 1000 0018 movel #268435480,%sp@- <== NOT EXECUTED
48794: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48796: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state> <== NOT EXECUTED
4879c: 508f addql #8,%sp <== NOT EXECUTED
4879e: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
487a4: 5380 subql #1,%d0 <== NOT EXECUTED
487a6: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
| STATES_INTERRUPTIBLE_BY_SIGNAL
);
_Thread_Unnest_dispatch();
break;
}
}
487ac: 4e5e unlk %fp <== NOT EXECUTED
000487b0 <_Thread_Dispatch>:
* dispatch thread
* no dispatch thread
*/
void _Thread_Dispatch( void )
{
487b0: 4e56 ffc8 linkw %fp,#-56
487b4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
487b8: 283c 0000 0700 movel #1792,%d4
487be: 2004 movel %d4,%d0
{
Thread_Control *executing;
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
487c0: 2479 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
487c6: 40c1 movew %sr,%d1
487c8: 8081 orl %d1,%d0
487ca: 46c0 movew %d0,%sr
while ( _Thread_Dispatch_necessary == true ) {
487cc: 1039 0005 e704 moveb 5e704 <_Per_CPU_Information+0x18>,%d0
487d2: 6700 0120 beqw 488f4 <_Thread_Dispatch+0x144>
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
487d6: 7001 moveq #1,%d0
487d8: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
487de: 2679 0005 e6fc moveal 5e6fc <_Per_CPU_Information+0x10>,%a3
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
487e4: 4200 clrb %d0
_Thread_Executing = heir;
487e6: 23cb 0005 e6f8 movel %a3,5e6f8 <_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;
487ec: 13c0 0005 e704 moveb %d0,5e704 <_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 )
487f2: b7ca cmpal %a2,%a3
487f4: 6700 00fe beqw 488f4 <_Thread_Dispatch+0x144>
487f8: 260e movel %fp,%d3
487fa: 240e movel %fp,%d2
487fc: 5183 subql #8,%d3
487fe: 2e3c 0004 baec movel #309996,%d7
48804: 0682 ffff fff0 addil #-16,%d2
4880a: 2c3c 0004 94fc movel #300284,%d6
48810: 2a3c 0004 94b4 movel #300212,%d5
48816: 4bf9 0004 97c4 lea 497c4 <_User_extensions_Thread_switch>,%a5
4881c: 49f9 0004 9b38 lea 49b38 <_CPU_Context_switch>,%a4
*/
#if __RTEMS_ADA__
executing->rtems_ada_self = rtems_ada_self;
rtems_ada_self = heir->rtems_ada_self;
#endif
if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
48822: 7001 moveq #1,%d0
48824: b0ab 007a cmpl %a3@(122),%d0
48828: 6700 00e2 beqw 4890c <_Thread_Dispatch+0x15c>
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
_ISR_Enable( level );
4882c: 46c1 movew %d1,%sr
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
{
Timestamp_Control uptime, ran;
_TOD_Get_uptime( &uptime );
4882e: 2f03 movel %d3,%sp@-
48830: 2047 moveal %d7,%a0
48832: 4e90 jsr %a0@
_Timestamp_Subtract(
48834: 2046 moveal %d6,%a0
48836: 2f02 movel %d2,%sp@-
48838: 2f03 movel %d3,%sp@-
4883a: 4879 0005 e604 pea 5e604 <_Thread_Time_of_last_context_switch>
48840: 4e90 jsr %a0@
&_Thread_Time_of_last_context_switch,
&uptime,
&ran
);
_Timestamp_Add_to( &executing->cpu_time_used, &ran );
48842: 2045 moveal %d5,%a0
48844: 2f02 movel %d2,%sp@-
48846: 486a 0082 pea %a2@(130)
4884a: 4e90 jsr %a0@
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
4884c: 2079 0005 e5de moveal 5e5de <_Thread_libc_reent>,%a0
48852: 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;
48856: 202e fff8 movel %fp@(-8),%d0
4885a: 222e fffc movel %fp@(-4),%d1
4885e: 23c0 0005 e604 movel %d0,5e604 <_Thread_Time_of_last_context_switch>
48864: 23c1 0005 e608 movel %d1,5e608 <_Thread_Time_of_last_context_switch+0x4>
#endif
/*
* Switch libc's task specific data.
*/
if ( _Thread_libc_reent ) {
4886a: 4a88 tstl %a0
4886c: 6708 beqs 48876 <_Thread_Dispatch+0xc6> <== NEVER TAKEN
executing->libc_reent = *_Thread_libc_reent;
4886e: 2550 00f8 movel %a0@,%a2@(248)
*_Thread_libc_reent = heir->libc_reent;
48872: 20ab 00f8 movel %a3@(248),%a0@
}
_User_extensions_Thread_switch( executing, heir );
48876: 2f0b movel %a3,%sp@-
48878: 2f0a movel %a2,%sp@-
4887a: 4e95 jsr %a5@
if ( executing->fp_context != NULL )
_Context_Save_fp( &executing->fp_context );
#endif
#endif
_Context_Switch( &executing->Registers, &heir->Registers );
4887c: 486b 00c0 pea %a3@(192)
48880: 486a 00c0 pea %a2@(192)
48884: 4e94 jsr %a4@
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
48886: 4fef 0010 lea %sp@(16),%sp
4888a: 4aaa 00f4 tstl %a2@(244)
4888e: 672c beqs 488bc <_Thread_Dispatch+0x10c> <== ALWAYS TAKEN
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
RTEMS_INLINE_ROUTINE bool _Thread_Is_allocated_fp (
const Thread_Control *the_thread
)
{
return ( the_thread == _Thread_Allocated_fp );
48890: 2079 0005 e5ba moveal 5e5ba <_Thread_Allocated_fp>,%a0 <== NOT EXECUTED
48896: b1ca cmpal %a2,%a0 <== NOT EXECUTED
48898: 6722 beqs 488bc <_Thread_Dispatch+0x10c> <== NOT EXECUTED
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4889a: 4a88 tstl %a0 <== NOT EXECUTED
4889c: 670c beqs 488aa <_Thread_Dispatch+0xfa> <== NOT EXECUTED
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4889e: 4868 00f4 pea %a0@(244) <== NOT EXECUTED
488a2: 4eb9 0004 9c5e jsr 49c5e <_CPU_Context_save_fp> <== NOT EXECUTED
488a8: 588f addql #4,%sp <== NOT EXECUTED
_Context_Restore_fp( &executing->fp_context );
488aa: 486a 00f4 pea %a2@(244) <== NOT EXECUTED
488ae: 4eb9 0004 9c96 jsr 49c96 <_CPU_Context_restore_fp> <== NOT EXECUTED
_Thread_Allocated_fp = executing;
488b4: 588f addql #4,%sp <== NOT EXECUTED
488b6: 23ca 0005 e5ba movel %a2,5e5ba <_Thread_Allocated_fp> <== NOT EXECUTED
if ( executing->fp_context != NULL )
_Context_Restore_fp( &executing->fp_context );
#endif
#endif
executing = _Thread_Executing;
488bc: 2479 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a2
_ISR_Disable( level );
488c2: 2004 movel %d4,%d0
488c4: 40c1 movew %sr,%d1
488c6: 8081 orl %d1,%d0
488c8: 46c0 movew %d0,%sr
Thread_Control *heir;
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
488ca: 1039 0005 e704 moveb 5e704 <_Per_CPU_Information+0x18>,%d0
488d0: 6722 beqs 488f4 <_Thread_Dispatch+0x144> <== ALWAYS TAKEN
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
488d2: 7001 moveq #1,%d0 <== NOT EXECUTED
488d4: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
ISR_Level level;
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
488da: 2679 0005 e6fc moveal 5e6fc <_Per_CPU_Information+0x10>,%a3<== NOT EXECUTED
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
488e0: 4200 clrb %d0 <== NOT EXECUTED
_Thread_Executing = heir;
488e2: 23cb 0005 e6f8 movel %a3,5e6f8 <_Per_CPU_Information+0xc> <== NOT EXECUTED
executing = _Thread_Executing;
_ISR_Disable( level );
while ( _Thread_Dispatch_necessary == true ) {
heir = _Thread_Heir;
_Thread_Dispatch_disable_level = 1;
_Thread_Dispatch_necessary = false;
488e8: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18> <== NOT EXECUTED
/*
* When the heir and executing are the same, then we are being
* requested to do the post switch dispatching. This is normally
* done to dispatch signals.
*/
if ( heir == executing )
488ee: b5cb cmpal %a3,%a2 <== NOT EXECUTED
488f0: 6600 ff30 bnew 48822 <_Thread_Dispatch+0x72> <== NOT EXECUTED
_ISR_Disable( level );
}
post_switch:
_Thread_Dispatch_disable_level = 0;
488f4: 42b9 0005 e538 clrl 5e538 <_Thread_Dispatch_disable_level>
_ISR_Enable( level );
488fa: 46c1 movew %d1,%sr
_API_extensions_Run_postswitch();
488fc: 4eb9 0004 6d6a jsr 46d6a <_API_extensions_Run_postswitch>
}
48902: 4cee 3cfc ffc8 moveml %fp@(-56),%d2-%d7/%a2-%a5
48908: 4e5e unlk %fp
4890a: 4e75 rts
#if __RTEMS_ADA__
executing->rtems_ada_self = rtems_ada_self;
rtems_ada_self = heir->rtems_ada_self;
#endif
if ( heir->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE )
heir->cpu_time_budget = _Thread_Ticks_per_timeslice;
4890c: 41f9 0005 e4f0 lea 5e4f0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
48912: 2750 0076 movel %a0@,%a3@(118) <== NOT EXECUTED
48916: 6000 ff14 braw 4882c <_Thread_Dispatch+0x7c> <== NOT EXECUTED
00048940 <_Thread_Get>:
*/
Thread_Control *_Thread_Get (
Objects_Id id,
Objects_Locations *location
)
{
48940: 4e56 0000 linkw %fp,#0
48944: 202e 0008 movel %fp@(8),%d0
48948: 2f03 movel %d3,%sp@-
4894a: 206e 000c moveal %fp@(12),%a0
4894e: 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 ) ) {
48950: 4a80 tstl %d0
48952: 6766 beqs 489ba <_Thread_Get+0x7a>
*/
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(
Objects_Id id
)
{
return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
48954: 7418 moveq #24,%d2
48956: 2200 movel %d0,%d1
48958: e4a9 lsrl %d2,%d1
4895a: 7607 moveq #7,%d3
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
4895c: 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);
48960: c283 andl %d3,%d1
*/
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(
uint32_t the_api
)
{
if ( !the_api || the_api > OBJECTS_APIS_LAST )
48962: 2241 moveal %d1,%a1
48964: 5389 subql #1,%a1
48966: b489 cmpl %a1,%d2
48968: 653e bcss 489a8 <_Thread_Get+0x68> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(
Objects_Id id
)
{
return (uint32_t)
4896a: 761b moveq #27,%d3
4896c: 2400 movel %d0,%d2
4896e: e6aa lsrl %d3,%d2
*location = OBJECTS_ERROR;
goto done;
}
the_class = _Objects_Get_class( id );
if ( the_class != 1 ) { /* threads are always first class :) */
48970: 163c 0001 moveb #1,%d3
48974: b682 cmpl %d2,%d3
48976: 6630 bnes 489a8 <_Thread_Get+0x68> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
api_information = _Objects_Information_table[ the_api ];
48978: 43f9 0005 e4f4 lea 5e4f4 <_Objects_Information_table>,%a1
4897e: 2271 1c00 moveal %a1@(00000000,%d1:l:4),%a1
/*
* There is no way for this to happen if POSIX is enabled.
*/
#if !defined(RTEMS_POSIX_API)
if ( !api_information ) {
48982: 4a89 tstl %a1
48984: 6722 beqs 489a8 <_Thread_Get+0x68> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
#endif
information = api_information[ the_class ];
48986: 2229 0004 movel %a1@(4),%d1
if ( !information ) {
4898a: 671c beqs 489a8 <_Thread_Get+0x68> <== NEVER TAKEN
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
4898c: 2f08 movel %a0,%sp@-
4898e: 2f00 movel %d0,%sp@-
48990: 2f01 movel %d1,%sp@-
48992: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get>
done:
return tp;
}
48998: 242e fff8 movel %fp@(-8),%d2
if ( !information ) {
*location = OBJECTS_ERROR;
goto done;
}
tp = (Thread_Control *) _Objects_Get( information, id, location );
4899c: 4fef 000c lea %sp@(12),%sp
done:
return tp;
}
489a0: 262e fffc movel %fp@(-4),%d3
489a4: 4e5e unlk %fp
489a6: 4e75 rts
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
489a8: 7001 moveq #1,%d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
489aa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
489ae: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
489b2: 4e5e unlk %fp <== NOT EXECUTED
}
#endif
information = api_information[ the_class ];
if ( !information ) {
*location = OBJECTS_ERROR;
489b4: 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;
489b6: 4280 clrl %d0 <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
489b8: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
489ba: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
489c0: 5280 addql #1,%d0
489c2: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
489c8: 242e fff8 movel %fp@(-8),%d2
489cc: 262e fffc movel %fp@(-4),%d3
489d0: 4e5e unlk %fp
Thread_Control *tp = (Thread_Control *) 0;
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
_Thread_Disable_dispatch();
*location = OBJECTS_LOCAL;
tp = _Thread_Executing;
489d2: 2039 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%d0
Objects_Information *information;
Thread_Control *tp = (Thread_Control *) 0;
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ) {
_Thread_Disable_dispatch();
*location = OBJECTS_LOCAL;
489d8: 4290 clrl %a0@ <== NOT EXECUTED
tp = (Thread_Control *) _Objects_Get( information, id, location );
done:
return tp;
}
0004d71c <_Thread_Handler>:
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4d71c: 4e56 0000 linkw %fp,#0
4d720: 2f0a movel %a2,%sp@-
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
static char doneConstructors;
char doneCons;
#endif
executing = _Thread_Executing;
4d722: 2479 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a2
*
* Output parameters: NONE
*/
void _Thread_Handler( void )
{
4d728: 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;
4d72a: 222a 00a8 movel %a2@(168),%d1
_ISR_Set_level(level);
4d72e: 40c0 movew %sr,%d0
4d730: e189 lsll #8,%d1
4d732: 0280 0000 f8ff andil #63743,%d0
4d738: 8081 orl %d1,%d0
4d73a: 46c0 movew %d0,%sr
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
doneConstructors = 1;
4d73c: 7001 moveq #1,%d0
level = executing->Start.isr_level;
_ISR_Set_level(level);
#if defined(EXECUTE_GLOBAL_CONSTRUCTORS)
doneCons = doneConstructors;
4d73e: 1439 0005 dcfc moveb 5dcfc <doneConstructors.3355>,%d2
doneConstructors = 1;
4d744: 13c0 0005 dcfc moveb %d0,5dcfc <doneConstructors.3355>
#endif
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )
if ( (executing->fp_context != NULL) &&
4d74a: 4aaa 00f4 tstl %a2@(244)
4d74e: 6720 beqs 4d770 <_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 );
4d750: 2079 0005 e5ba moveal 5e5ba <_Thread_Allocated_fp>,%a0
4d756: b1ca cmpal %a2,%a0
4d758: 6716 beqs 4d770 <_Thread_Handler+0x54> <== NEVER TAKEN
!_Thread_Is_allocated_fp( executing ) ) {
if ( _Thread_Allocated_fp != NULL )
4d75a: 4a88 tstl %a0
4d75c: 670c beqs 4d76a <_Thread_Handler+0x4e> <== ALWAYS TAKEN
_Context_Save_fp( &_Thread_Allocated_fp->fp_context );
4d75e: 4868 00f4 pea %a0@(244) <== NOT EXECUTED
4d762: 4eb9 0004 9c5e jsr 49c5e <_CPU_Context_save_fp> <== NOT EXECUTED
4d768: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Allocated_fp = executing;
4d76a: 23ca 0005 e5ba movel %a2,5e5ba <_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 );
4d770: 2f0a movel %a2,%sp@-
4d772: 4eb9 0004 9610 jsr 49610 <_User_extensions_Thread_begin>
/*
* At this point, the dispatch disable level BETTER be 1.
*/
_Thread_Enable_dispatch();
4d778: 4eb9 0004 891a jsr 4891a <_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) */ {
4d77e: 588f addql #4,%sp
4d780: 4a02 tstb %d2
4d782: 6746 beqs 4d7ca <_Thread_Handler+0xae>
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4d784: 4aaa 0092 tstl %a2@(146)
4d788: 6718 beqs 4d7a2 <_Thread_Handler+0x86> <== ALWAYS TAKEN
* was placed in return_argument. This assumed that if it returned
* anything (which is not supporting in all APIs), then it would be
* able to fit in a (void *).
*/
_User_extensions_Thread_exitted( executing );
4d78a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d78c: 4eb9 0004 964e jsr 4964e <_User_extensions_Thread_exitted> <== NOT EXECUTED
_Internal_error_Occurred(
4d792: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
4d796: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4d79a: 42a7 clrl %sp@- <== NOT EXECUTED
4d79c: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
(*(Thread_Entry_numeric) executing->Start.entry_point)(
4d7a2: 2f2a 009a movel %a2@(154),%sp@-
4d7a6: 206a 008e moveal %a2@(142),%a0
4d7aa: 4e90 jsr %a0@
INIT_NAME ();
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
executing->Wait.return_argument =
4d7ac: 588f addql #4,%sp
4d7ae: 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 );
4d7b2: 2f0a movel %a2,%sp@-
4d7b4: 4eb9 0004 964e jsr 4964e <_User_extensions_Thread_exitted>
_Internal_error_Occurred(
4d7ba: 4878 0005 pea 5 <COMPARE>
4d7be: 4878 0001 pea 1 <ADD>
4d7c2: 42a7 clrl %sp@-
4d7c4: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
* _init could be a weak symbol and we SHOULD test it but it isn't
* in any configuration I know of and it generates a warning on every
* RTEMS target configuration. --joel (12 May 2007)
*/
if (!doneCons) /* && (volatile void *)_init) */ {
INIT_NAME ();
4d7ca: 4eb9 0005 b384 jsr 5b384 <_init>
}
#endif
if ( executing->Start.prototype == THREAD_START_NUMERIC ) {
4d7d0: 4aaa 0092 tstl %a2@(146)
4d7d4: 66b4 bnes 4d78a <_Thread_Handler+0x6e> <== NEVER TAKEN
4d7d6: 60ca bras 4d7a2 <_Thread_Handler+0x86>
00048bd4 <_Thread_Handler_initialization>:
*
* Output parameters: NONE
*/
void _Thread_Handler_initialization(void)
{
48bd4: 4e56 0000 linkw %fp,#0
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
== (!Configuration.stack_free_hook) ) )
48bd8: 4ab9 0005 cd3c tstl 5cd3c <Configuration+0x28>
48bde: 57c1 seq %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48be0: 4ab9 0005 cd38 tstl 5cd38 <Configuration+0x24>
48be6: 57c0 seq %d0
== (!Configuration.stack_free_hook) ) )
48be8: 4481 negl %d1
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48bea: 4480 negl %d0
48bec: b380 eorl %d1,%d0
uint32_t maximum_extensions;
#if defined(RTEMS_MULTIPROCESSING)
uint32_t maximum_proxies;
#endif
ticks_per_timeslice = Configuration.ticks_per_timeslice;
48bee: 2239 0005 cd24 movel 5cd24 <Configuration+0x10>,%d1
maximum_extensions = Configuration.maximum_extensions;
48bf4: 2079 0005 cd1c moveal 5cd1c <Configuration+0x8>,%a0
#endif
/*
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
48bfa: 4a00 tstb %d0
48bfc: 6650 bnes 48c4e <_Thread_Handler_initialization+0x7a>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48bfe: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48c02: 4200 clrb %d0
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c04: 42a7 clrl %sp@-
48c06: 4878 010c pea 10c <DBL_MANT_DIG+0xd7>
48c0a: 4878 0001 pea 1 <ADD>
48c0e: 4878 0001 pea 1 <ADD>
48c12: 4878 0001 pea 1 <ADD>
48c16: 4879 0005 e668 pea 5e668 <_Thread_Internal_information>
INTERNAL_ERROR_CORE,
true,
INTERNAL_ERROR_BAD_STACK_HOOK
);
_Thread_Dispatch_necessary = false;
48c1c: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18>
_Thread_Executing = NULL;
48c22: 42b9 0005 e6f8 clrl 5e6f8 <_Per_CPU_Information+0xc>
_Thread_Heir = NULL;
48c28: 42b9 0005 e6fc clrl 5e6fc <_Per_CPU_Information+0x10>
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
_Thread_Allocated_fp = NULL;
48c2e: 42b9 0005 e5ba clrl 5e5ba <_Thread_Allocated_fp>
#endif
_Thread_Maximum_extensions = maximum_extensions;
48c34: 23c8 0005 e5ea movel %a0,5e5ea <_Thread_Maximum_extensions>
_Thread_Ticks_per_timeslice = ticks_per_timeslice;
48c3a: 23c1 0005 e4f0 movel %d1,5e4f0 <_Thread_Ticks_per_timeslice>
/*
* Initialize this class of objects.
*/
_Objects_Initialize_information(
48c40: 4eb9 0004 7df8 jsr 47df8 <_Objects_Initialize_information>
48c46: 4fef 001c lea %sp@(28),%sp
false, /* true if this is a global object class */
NULL /* Proxy extraction support callout */
#endif
);
}
48c4a: 4e5e unlk %fp
48c4c: 4e75 rts
* BOTH stacks hooks must be set or both must be NULL.
* Do not allow mixture.
*/
if ( !( (!Configuration.stack_allocate_hook)
== (!Configuration.stack_free_hook) ) )
_Internal_error_Occurred(
48c4e: 4878 000e pea e <OPER1+0x2>
48c52: 4878 0001 pea 1 <ADD>
48c56: 42a7 clrl %sp@-
48c58: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
000489dc <_Thread_Initialize>:
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
489dc: 4e56 ffe8 linkw %fp,#-24
489e0: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
489e4: 266e 0014 moveal %fp@(20),%a3
489e8: 246e 000c moveal %fp@(12),%a2
/*
* Allocate and Initialize the stack for this thread.
*/
#if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
489ec: 2f0b movel %a3,%sp@-
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
489ee: 242e 001c movel %fp@(28),%d2
/*
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
489f2: 42aa 00fc clrl %a2@(252)
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
489f6: 162e 001b moveb %fp@(27),%d3
/*
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
489fa: 42aa 0100 clrl %a2@(256)
Thread_CPU_budget_algorithms budget_algorithm,
Thread_CPU_budget_algorithm_callout budget_callout,
uint32_t isr_level,
Objects_Name name
)
{
489fe: 182e 0023 moveb %fp@(35),%d4
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
the_thread->libc_reent = NULL;
48a02: 42aa 00f8 clrl %a2@(248)
/*
* Allocate and Initialize the stack for this thread.
*/
#if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
48a06: 2f0a movel %a2,%sp@-
48a08: 4eb9 0004 92d0 jsr 492d0 <_Thread_Stack_Allocate>
if ( !actual_stack_size || actual_stack_size < stack_size )
48a0e: 508f addql #8,%sp
48a10: 4a80 tstl %d0
48a12: 6700 0132 beqw 48b46 <_Thread_Initialize+0x16a>
48a16: b08b cmpl %a3,%d0
48a18: 6500 012c bcsw 48b46 <_Thread_Initialize+0x16a>
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
the_stack->size = size;
48a1c: 2540 00b0 movel %d0,%a2@(176)
Stack_Control *the_stack,
void *starting_address,
size_t size
)
{
the_stack->area = starting_address;
48a20: 256a 00bc 00b4 movel %a2@(188),%a2@(180)
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
48a26: 4a03 tstb %d3
48a28: 6600 0134 bnew 48b5e <_Thread_Initialize+0x182>
48a2c: 4280 clrl %d0
extensions_area = NULL;
the_thread->libc_reent = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
fp_area = NULL;
48a2e: 4285 clrl %d5
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48a30: 2239 0005 e5ea movel 5e5ea <_Thread_Maximum_extensions>,%d1
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
if ( !fp_area )
goto failed;
fp_area = _Context_Fp_start( fp_area, 0 );
}
the_thread->fp_context = fp_area;
48a36: 2540 00f4 movel %d0,%a2@(244)
the_thread->Start.fp_context = fp_area;
48a3a: 2540 00b8 movel %d0,%a2@(184)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48a3e: 42aa 0050 clrl %a2@(80)
the_watchdog->routine = routine;
48a42: 42aa 0064 clrl %a2@(100)
the_watchdog->id = id;
48a46: 42aa 0068 clrl %a2@(104)
the_watchdog->user_data = user_data;
48a4a: 42aa 006c clrl %a2@(108)
#endif
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
48a4e: 4a81 tstl %d1
48a50: 6600 0130 bnew 48b82 <_Thread_Initialize+0x1a6>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48a54: 42aa 0104 clrl %a2@(260)
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48a58: 97cb subal %a3,%a3
RTEMS_INLINE_ROUTINE void* _Scheduler_Thread_scheduler_allocate(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
return
48a5a: 2f0a movel %a2,%sp@-
48a5c: 4879 0005 e5be pea 5e5be <_Scheduler>
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48a62: 7001 moveq #1,%d0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
the_thread->Start.budget_algorithm = budget_algorithm;
48a64: 256e 0024 00a0 movel %fp@(36),%a2@(160)
the_thread->Start.budget_callout = budget_callout;
48a6a: 256e 0028 00a4 movel %fp@(40),%a2@(164)
case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:
break;
#endif
}
the_thread->Start.isr_level = isr_level;
48a70: 256e 002c 00a8 movel %fp@(44),%a2@(168)
48a76: 2079 0005 e5d2 moveal 5e5d2 <_Scheduler+0x14>,%a0
/*
* General initialization
*/
the_thread->Start.is_preemptible = is_preemptible;
48a7c: 1544 009e moveb %d4,%a2@(158)
#endif
}
the_thread->Start.isr_level = isr_level;
the_thread->current_state = STATES_DORMANT;
48a80: 2540 0010 movel %d0,%a2@(16)
the_thread->Wait.queue = NULL;
48a84: 42aa 0044 clrl %a2@(68)
the_thread->resource_count = 0;
48a88: 42aa 001c clrl %a2@(28)
the_thread->real_priority = priority;
48a8c: 2542 0018 movel %d2,%a2@(24)
the_thread->Start.initial_priority = priority;
48a90: 2542 00ac movel %d2,%a2@(172)
48a94: 4e90 jsr %a0@
sched =_Scheduler_Thread_scheduler_allocate( &_Scheduler, the_thread );
if ( !sched )
48a96: 508f addql #8,%sp
48a98: 2600 movel %d0,%d3
48a9a: 673a beqs 48ad6 <_Thread_Initialize+0xfa> <== NEVER TAKEN
goto failed;
_Thread_Set_priority( the_thread, priority );
48a9c: 2f02 movel %d2,%sp@-
48a9e: 2f0a movel %a2,%sp@-
48aa0: 4eb9 0004 91d4 jsr 491d4 <_Thread_Set_priority>
_Thread_Stack_Free( the_thread );
return false;
}
48aa6: 206e 0008 moveal %fp@(8),%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
48aaa: 4280 clrl %d0
48aac: 2068 0018 moveal %a0@(24),%a0
48ab0: 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 );
48ab4: 42aa 0082 clrl %a2@(130)
48ab8: 42aa 0086 clrl %a2@(134)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
48abc: 218a 0c00 movel %a2,%a0@(00000000,%d0:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48ac0: 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 );
48ac6: 2f0a movel %a2,%sp@-
48ac8: 4eb9 0004 96e0 jsr 496e0 <_User_extensions_Thread_create>
if ( extension_status )
48ace: 4fef 000c lea %sp@(12),%sp
48ad2: 4a00 tstb %d0
48ad4: 667c bnes 48b52 <_Thread_Initialize+0x176> <== ALWAYS TAKEN
return true;
failed:
if ( the_thread->libc_reent )
48ad6: 202a 00f8 movel %a2@(248),%d0 <== NOT EXECUTED
48ada: 670a beqs 48ae6 <_Thread_Initialize+0x10a> <== NOT EXECUTED
_Workspace_Free( the_thread->libc_reent );
48adc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48ade: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48ae4: 588f addql #4,%sp <== NOT EXECUTED
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
if ( the_thread->API_Extensions[i] )
48ae6: 202a 00fc movel %a2@(252),%d0 <== NOT EXECUTED
48aea: 670a beqs 48af6 <_Thread_Initialize+0x11a> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48aec: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48aee: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48af4: 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] )
48af6: 202a 0100 movel %a2@(256),%d0 <== NOT EXECUTED
48afa: 670a beqs 48b06 <_Thread_Initialize+0x12a> <== NOT EXECUTED
_Workspace_Free( the_thread->API_Extensions[i] );
48afc: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48afe: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48b04: 588f addql #4,%sp <== NOT EXECUTED
if ( extensions_area )
48b06: 4a8b tstl %a3 <== NOT EXECUTED
48b08: 670a beqs 48b14 <_Thread_Initialize+0x138> <== NOT EXECUTED
(void) _Workspace_Free( extensions_area );
48b0a: 2f0b movel %a3,%sp@- <== NOT EXECUTED
48b0c: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48b12: 588f addql #4,%sp <== NOT EXECUTED
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( fp_area )
48b14: 4a85 tstl %d5 <== NOT EXECUTED
48b16: 670a beqs 48b22 <_Thread_Initialize+0x146> <== NOT EXECUTED
(void) _Workspace_Free( fp_area );
48b18: 2f05 movel %d5,%sp@- <== NOT EXECUTED
48b1a: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48b20: 588f addql #4,%sp <== NOT EXECUTED
#endif
if ( sched )
48b22: 4a83 tstl %d3 <== NOT EXECUTED
48b24: 670a beqs 48b30 <_Thread_Initialize+0x154> <== NOT EXECUTED
(void) _Workspace_Free( sched );
48b26: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48b28: 4eb9 0004 9aea jsr 49aea <_Workspace_Free> <== NOT EXECUTED
48b2e: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Stack_Free( the_thread );
48b30: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48b32: 4eb9 0004 9334 jsr 49334 <_Thread_Stack_Free> <== NOT EXECUTED
return false;
48b38: 588f addql #4,%sp <== NOT EXECUTED
}
48b3a: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
if ( sched )
(void) _Workspace_Free( sched );
_Thread_Stack_Free( the_thread );
return false;
48b40: 4200 clrb %d0 <== NOT EXECUTED
}
48b42: 4e5e unlk %fp <== NOT EXECUTED
48b44: 4e75 rts <== NOT EXECUTED
48b46: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
* Allocate and Initialize the stack for this thread.
*/
#if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API)
actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
if ( !actual_stack_size || actual_stack_size < stack_size )
return false; /* stack allocation failed */
48b4c: 4200 clrb %d0
_Thread_Stack_Free( the_thread );
return false;
}
48b4e: 4e5e unlk %fp
48b50: 4e75 rts
48b52: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
* Mutex provides sufficient protection to let the user extensions
* run safely.
*/
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
48b58: 7001 moveq #1,%d0
_Thread_Stack_Free( the_thread );
return false;
}
48b5a: 4e5e unlk %fp
48b5c: 4e75 rts
/*
* Allocate the floating point area for this thread
*/
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( is_fp ) {
fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );
48b5e: 4878 001c pea 1c <OPER2+0x8>
48b62: 4eb9 0004 9ace jsr 49ace <_Workspace_Allocate>
if ( !fp_area )
48b68: 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 );
48b6a: 2a00 movel %d0,%d5
if ( !fp_area )
48b6c: 6600 fec2 bnew 48a30 <_Thread_Initialize+0x54>
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48b70: 202a 00f8 movel %a2@(248),%d0 <== NOT EXECUTED
* Zero out all the allocated memory fields
*/
for ( i=0 ; i <= THREAD_API_LAST ; i++ )
the_thread->API_Extensions[i] = NULL;
extensions_area = NULL;
48b74: 97cb subal %a3,%a3 <== NOT EXECUTED
size_t actual_stack_size = 0;
void *stack = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
void *fp_area;
#endif
void *sched = NULL;
48b76: 4283 clrl %d3 <== NOT EXECUTED
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48b78: 4a80 tstl %d0 <== NOT EXECUTED
48b7a: 6600 ff60 bnew 48adc <_Thread_Initialize+0x100> <== NOT EXECUTED
48b7e: 6000 ff66 braw 48ae6 <_Thread_Initialize+0x10a> <== NOT EXECUTED
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48b82: e589 lsll #2,%d1
48b84: 2041 moveal %d1,%a0
48b86: 4868 0004 pea %a0@(4)
48b8a: 4eb9 0004 9ace jsr 49ace <_Workspace_Allocate>
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48b90: 588f addql #4,%sp
/*
* Allocate the extensions area for this thread
*/
if ( _Thread_Maximum_extensions ) {
extensions_area = _Workspace_Allocate(
48b92: 2640 moveal %d0,%a3
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
48b94: 4a80 tstl %d0
48b96: 672c beqs 48bc4 <_Thread_Initialize+0x1e8> <== NEVER TAKEN
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48b98: 2079 0005 e5ea moveal 5e5ea <_Thread_Maximum_extensions>,%a0
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
48b9e: 4281 clrl %d1
(_Thread_Maximum_extensions + 1) * sizeof( void * )
);
if ( !extensions_area )
goto failed;
}
the_thread->extensions = (void **) extensions_area;
48ba0: 4280 clrl %d0
48ba2: 254b 0104 movel %a3,%a2@(260)
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
the_thread->extensions[i] = NULL;
48ba6: 42b3 1c00 clrl %a3@(00000000,%d1:l:4)
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
48baa: 5280 addql #1,%d0
48bac: 2200 movel %d0,%d1
48bae: b088 cmpl %a0,%d0
48bb0: 6200 fea8 bhiw 48a5a <_Thread_Initialize+0x7e>
the_thread->extensions[i] = NULL;
48bb4: 42b3 1c00 clrl %a3@(00000000,%d1:l:4)
* create the extension long after tasks have been created
* so they cannot rely on the thread create user extension
* call.
*/
if ( the_thread->extensions ) {
for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )
48bb8: 5280 addql #1,%d0
48bba: 2200 movel %d0,%d1
48bbc: b088 cmpl %a0,%d0
48bbe: 63e6 blss 48ba6 <_Thread_Initialize+0x1ca>
48bc0: 6000 fe98 braw 48a5a <_Thread_Initialize+0x7e>
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48bc4: 202a 00f8 movel %a2@(248),%d0 <== NOT EXECUTED
size_t actual_stack_size = 0;
void *stack = NULL;
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
void *fp_area;
#endif
void *sched = NULL;
48bc8: 4283 clrl %d3 <== NOT EXECUTED
extension_status = _User_extensions_Thread_create( the_thread );
if ( extension_status )
return true;
failed:
if ( the_thread->libc_reent )
48bca: 4a80 tstl %d0 <== NOT EXECUTED
48bcc: 6600 ff0e bnew 48adc <_Thread_Initialize+0x100> <== NOT EXECUTED
48bd0: 6000 ff14 braw 48ae6 <_Thread_Initialize+0x10a> <== NOT EXECUTED
0004cfa0 <_Thread_Reset>:
void _Thread_Reset(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
4cfa0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4cfa4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cfa6: 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;
4cfaa: 256a 00a0 007a movel %a2@(160),%a2@(122) <== NOT EXECUTED
the_thread->budget_callout = the_thread->Start.budget_callout;
4cfb0: 256a 00a4 007e movel %a2@(164),%a2@(126) <== NOT EXECUTED
the_thread->Start.pointer_argument = pointer_argument;
4cfb6: 256e 000c 0096 movel %fp@(12),%a2@(150) <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
4cfbc: 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;
4cfc2: 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;
4cfc8: 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 ) ) {
4cfcc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4cfce: 4eb9 0004 9c38 jsr 49c38 <_Thread_queue_Extract_with_proxy><== NOT EXECUTED
4cfd4: 588f addql #4,%sp <== NOT EXECUTED
4cfd6: 4a00 tstb %d0 <== NOT EXECUTED
4cfd8: 6608 bnes 4cfe2 <_Thread_Reset+0x42> <== NOT EXECUTED
if ( _Watchdog_Is_active( &the_thread->Timer ) )
4cfda: 7002 moveq #2,%d0 <== NOT EXECUTED
4cfdc: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4cfe0: 672a beqs 4d00c <_Thread_Reset+0x6c> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
}
if ( the_thread->current_priority != the_thread->Start.initial_priority ) {
4cfe2: 202a 00ac movel %a2@(172),%d0 <== NOT EXECUTED
4cfe6: b0aa 0014 cmpl %a2@(20),%d0 <== NOT EXECUTED
4cfea: 6718 beqs 4d004 <_Thread_Reset+0x64> <== NOT EXECUTED
the_thread->real_priority = the_thread->Start.initial_priority;
4cfec: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
_Thread_Set_priority( the_thread, the_thread->Start.initial_priority );
4cff0: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
}
4cff4: 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 );
4cff8: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
}
}
4cffc: 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 );
4cffe: 4ef9 0004 9e78 jmp 49e78 <_Thread_Set_priority> <== NOT EXECUTED
}
}
4d004: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d008: 4e5e unlk %fp <== NOT EXECUTED
4d00a: 4e75 rts <== NOT EXECUTED
the_thread->Start.numeric_argument = numeric_argument;
if ( !_Thread_queue_Extract_with_proxy( the_thread ) ) {
if ( _Watchdog_Is_active( &the_thread->Timer ) )
(void) _Watchdog_Remove( &the_thread->Timer );
4d00c: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4d010: 4eb9 0004 a634 jsr 4a634 <_Watchdog_Remove> <== NOT EXECUTED
4d016: 588f addql #4,%sp <== NOT EXECUTED
4d018: 60c8 bras 4cfe2 <_Thread_Reset+0x42> <== NOT EXECUTED
...
00049de8 <_Thread_Restart>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
49de8: 7001 moveq #1,%d0 <== NOT EXECUTED
bool _Thread_Restart(
Thread_Control *the_thread,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
49dea: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49dee: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49df0: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
49df4: c0aa 0010 andl %a2@(16),%d0 <== NOT EXECUTED
if ( !_States_Is_dormant( the_thread->current_state ) ) {
49df8: 670a beqs 49e04 <_Thread_Restart+0x1c> <== NOT EXECUTED
return true;
}
return false;
}
49dfa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49dfe: 4e5e unlk %fp <== NOT EXECUTED
_Thread_Restart_self();
return true;
}
return false;
49e00: 4200 clrb %d0 <== NOT EXECUTED
}
49e02: 4e75 rts <== NOT EXECUTED
Thread_Entry_numeric_type numeric_argument
)
{
if ( !_States_Is_dormant( the_thread->current_state ) ) {
_Thread_Set_transient( the_thread );
49e04: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e06: 4eb9 0004 9ef0 jsr 49ef0 <_Thread_Set_transient> <== NOT EXECUTED
_Thread_Reset( the_thread, pointer_argument, numeric_argument );
49e0c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
49e10: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49e14: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e16: 4eb9 0004 cfa0 jsr 4cfa0 <_Thread_Reset> <== NOT EXECUTED
_Thread_Load_environment( the_thread );
49e1c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e1e: 4eb9 0004 cc84 jsr 4cc84 <_Thread_Load_environment> <== NOT EXECUTED
_Thread_Ready( the_thread );
49e24: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e26: 4eb9 0004 cf68 jsr 4cf68 <_Thread_Ready> <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
49e2c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49e2e: 4eb9 0004 a424 jsr 4a424 <_User_extensions_Thread_restart> <== NOT EXECUTED
if ( _Thread_Is_executing ( the_thread ) )
49e34: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
49e38: b5f9 0005 f6a0 cmpal 5f6a0 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
49e3e: 670a beqs 49e4a <_Thread_Restart+0x62> <== NOT EXECUTED
return true;
}
return false;
}
49e40: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49e44: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49e46: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
49e48: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )
{
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )
if ( _Thread_Executing->fp_context != NULL )
49e4a: 4aaa 00f4 tstl %a2@(244) <== NOT EXECUTED
49e4e: 6712 beqs 49e62 <_Thread_Restart+0x7a> <== NOT EXECUTED
_Context_Restore_fp( &_Thread_Executing->fp_context );
49e50: 486a 00f4 pea %a2@(244) <== NOT EXECUTED
49e54: 4eb9 0004 a97e jsr 4a97e <_CPU_Context_restore_fp> <== NOT EXECUTED
49e5a: 2479 0005 f6a0 moveal 5f6a0 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
49e60: 588f addql #4,%sp <== NOT EXECUTED
#endif
_CPU_Context_Restart_self( &_Thread_Executing->Registers );
49e62: 486a 00c0 pea %a2@(192) <== NOT EXECUTED
49e66: 4eb9 0004 a836 jsr 4a836 <_CPU_Context_Restart_self> <== NOT EXECUTED
49e6c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49e70: 588f addql #4,%sp <== NOT EXECUTED
49e72: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_restart( the_thread );
if ( _Thread_Is_executing ( the_thread ) )
_Thread_Restart_self();
return true;
49e74: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
0004c874 <_Thread_Resume>:
{
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c874: 203c 0000 0700 movel #1792,%d0
void _Thread_Resume(
Thread_Control *the_thread,
bool force
)
{
4c87a: 4e56 0000 linkw %fp,#0
4c87e: 206e 0008 moveal %fp@(8),%a0
4c882: 2f02 movel %d2,%sp@-
ISR_Level level;
States_Control current_state;
_ISR_Disable( level );
4c884: 40c2 movew %sr,%d2
4c886: 8082 orl %d2,%d0
4c888: 46c0 movew %d0,%sr
current_state = the_thread->current_state;
4c88a: 2028 0010 movel %a0@(16),%d0
if ( current_state & STATES_SUSPENDED ) {
4c88e: 0800 0001 btst #1,%d0
4c892: 670a beqs 4c89e <_Thread_Resume+0x2a> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (
States_Control states_to_clear,
States_Control current_state
)
{
return (current_state & ~states_to_clear);
4c894: 72fd moveq #-3,%d1
4c896: c081 andl %d1,%d0
current_state =
the_thread->current_state = _States_Clear(STATES_SUSPENDED, current_state);
4c898: 2140 0010 movel %d0,%a0@(16)
if ( _States_Is_ready( current_state ) ) {
4c89c: 670a beqs 4c8a8 <_Thread_Resume+0x34> <== ALWAYS TAKEN
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c89e: 46c2 movew %d2,%sr <== NOT EXECUTED
}
4c8a0: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
4c8a4: 4e5e unlk %fp <== NOT EXECUTED
4c8a6: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_Unblock(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.unblock( the_scheduler, the_thread );
4c8a8: 2f08 movel %a0,%sp@-
4c8aa: 4879 0006 2306 pea 62306 <_Scheduler>
4c8b0: 2079 0006 2316 moveal 62316 <_Scheduler+0x10>,%a0
4c8b6: 4e90 jsr %a0@
4c8b8: 508f addql #8,%sp
if ( _States_Is_ready( current_state ) ) {
_Scheduler_Unblock( &_Scheduler, the_thread );
}
}
_ISR_Enable( level );
4c8ba: 46c2 movew %d2,%sr
}
4c8bc: 242e fffc movel %fp@(-4),%d2
4c8c0: 4e5e unlk %fp <== NOT EXECUTED
000491d4 <_Thread_Set_priority>:
void _Thread_Set_priority(
Thread_Control *the_thread,
Priority_Control new_priority
)
{
491d4: 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 );
491d8: 203c 0005 e5be movel #386494,%d0
491de: 206e 0008 moveal %fp@(8),%a0
the_thread->current_priority = new_priority;
491e2: 216e 000c 0014 movel %fp@(12),%a0@(20)
491e8: 2279 0005 e5da moveal 5e5da <_Scheduler+0x1c>,%a1
491ee: 2d40 0008 movel %d0,%fp@(8)
491f2: 2d48 000c movel %a0,%fp@(12)
_Scheduler_Thread_scheduler_update(&_Scheduler, the_thread);
}
491f6: 4e5e unlk %fp
491f8: 4ed1 jmp %a1@
...
000491fc <_Thread_Set_state>:
States_Control state
)
{
ISR_Level level;
_ISR_Disable( level );
491fc: 203c 0000 0700 movel #1792,%d0
void _Thread_Set_state(
Thread_Control *the_thread,
States_Control state
)
{
49202: 4e56 0000 linkw %fp,#0
49206: 206e 0008 moveal %fp@(8),%a0
4920a: 2f02 movel %d2,%sp@-
4920c: 222e 000c movel %fp@(12),%d1
ISR_Level level;
_ISR_Disable( level );
49210: 40c2 movew %sr,%d2
49212: 8082 orl %d2,%d0
49214: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
49216: 2028 0010 movel %a0@(16),%d0
4921a: 6710 beqs 4922c <_Thread_Set_state+0x30> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
4921c: 8280 orl %d0,%d1 <== NOT EXECUTED
4921e: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
49222: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = state;
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
}
49224: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
49228: 4e5e unlk %fp <== NOT EXECUTED
4922a: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Scheduler_Block(
Scheduler_Control *the_scheduler,
Thread_Control *the_thread
)
{
the_scheduler->Operations.block( the_scheduler, the_thread );
4922c: 2f08 movel %a0,%sp@-
4922e: 4879 0005 e5be pea 5e5be <_Scheduler>
_States_Set( state, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = state;
49234: 2141 0010 movel %d1,%a0@(16)
49238: 2079 0005 e5ca moveal 5e5ca <_Scheduler+0xc>,%a0
4923e: 4e90 jsr %a0@
_Scheduler_Block( &_Scheduler, the_thread);
_ISR_Enable( level );
49240: 46c2 movew %d2,%sr
49242: 508f addql #8,%sp
}
49244: 242e fffc movel %fp@(-4),%d2
49248: 4e5e unlk %fp <== NOT EXECUTED
0004924c <_Thread_Set_transient>:
)
{
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
4924c: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Set_transient(
Thread_Control *the_thread
)
{
49252: 4e56 0000 linkw %fp,#0
49256: 206e 0008 moveal %fp@(8),%a0
4925a: 2f02 movel %d2,%sp@-
ISR_Level level;
uint32_t old_state;
_ISR_Disable( level );
4925c: 40c1 movew %sr,%d1
4925e: 8081 orl %d1,%d0
49260: 46c0 movew %d0,%sr
old_state = the_thread->current_state;
49262: 2028 0010 movel %a0@(16),%d0
49266: 7404 moveq #4,%d2
49268: 8480 orl %d0,%d2
4926a: 2142 0010 movel %d2,%a0@(16)
the_thread->current_state = _States_Set( STATES_TRANSIENT, old_state );
/* FIXME: need to check which scheduler to use? */
if ( _States_Is_ready( old_state ) ) {
4926e: 4a80 tstl %d0
49270: 661a bnes 4928c <_Thread_Set_transient+0x40>
RTEMS_INLINE_ROUTINE void _Scheduler_priority_Ready_queue_extract(
Thread_Control *the_thread
)
{
Chain_Control *ready = the_thread->scheduler.priority->ready_chain;
49272: 2268 008a moveal %a0@(138),%a1
49276: 2251 moveal %a1@,%a1
if ( _Chain_Has_only_one_node( ready ) ) {
49278: 2029 0008 movel %a1@(8),%d0
4927c: b091 cmpl %a1@,%d0
4927e: 6714 beqs 49294 <_Thread_Set_transient+0x48> <== ALWAYS TAKEN
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
49280: 2250 moveal %a0@,%a1 <== NOT EXECUTED
previous = the_node->previous;
49282: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
next->previous = previous;
49286: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4928a: 2089 movel %a1,%a0@ <== NOT EXECUTED
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
4928c: 46c1 movew %d1,%sr
}
4928e: 241f movel %sp@+,%d2
49290: 4e5e unlk %fp
49292: 4e75 rts
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
49294: 2409 movel %a1,%d2
49296: 5882 addql #4,%d2
head->next = tail;
head->previous = NULL;
49298: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4929c: 2282 movel %d2,%a1@
head->next = tail;
head->previous = NULL;
tail->previous = head;
4929e: 2349 0008 movel %a1,%a1@(8)
_Chain_Initialize_empty( ready );
_Priority_bit_map_Remove( &the_thread->scheduler.priority->Priority_map );
492a2: 2068 008a moveal %a0@(138),%a0
RTEMS_INLINE_ROUTINE void _Priority_bit_map_Remove (
Priority_bit_map_Information *the_priority_map
)
{
*the_priority_map->minor &= the_priority_map->block_minor;
492a6: 2268 0004 moveal %a0@(4),%a1
492aa: 3028 000e movew %a0@(14),%d0
492ae: 3411 movew %a1@,%d2
492b0: c082 andl %d2,%d0
492b2: 3280 movew %d0,%a1@
if ( *the_priority_map->minor == 0 )
492b4: 66d6 bnes 4928c <_Thread_Set_transient+0x40>
_Priority_Major_bit_map &= the_priority_map->block_major;
492b6: 3439 0005 e708 movew 5e708 <_Priority_Major_bit_map>,%d2
492bc: 3028 000c movew %a0@(12),%d0
492c0: c082 andl %d2,%d0
492c2: 33c0 0005 e708 movew %d0,5e708 <_Priority_Major_bit_map>
/* FIXME: need to check which scheduler to use? */
if ( _States_Is_ready( old_state ) ) {
_Scheduler_priority_Ready_queue_extract( the_thread);
}
_ISR_Enable( level );
492c8: 46c1 movew %d1,%sr
}
492ca: 241f movel %sp@+,%d2
492cc: 4e5e unlk %fp <== NOT EXECUTED
00049334 <_Thread_Stack_Free>:
*/
void _Thread_Stack_Free(
Thread_Control *the_thread
)
{
49334: 4e56 0000 linkw %fp,#0
49338: 206e 0008 moveal %fp@(8),%a0
* Call ONLY the CPU table stack free hook, or the
* the RTEMS workspace free. This is so the free
* routine properly matches the allocation of the stack.
*/
if ( Configuration.stack_free_hook )
4933c: 2279 0005 cd3c moveal 5cd3c <Configuration+0x28>,%a1
49342: 4a89 tstl %a1
49344: 670a beqs 49350 <_Thread_Stack_Free+0x1c> <== ALWAYS TAKEN
(*Configuration.stack_free_hook)( the_thread->Start.Initial_stack.area );
49346: 2d68 00b4 0008 movel %a0@(180),%fp@(8) <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
}
4934c: 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 );
4934e: 4ed1 jmp %a1@ <== NOT EXECUTED
else
_Workspace_Free( the_thread->Start.Initial_stack.area );
49350: 2d68 00b4 0008 movel %a0@(180),%fp@(8)
}
49356: 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 );
49358: 4ef9 0004 9aea jmp 49aea <_Workspace_Free>
...
000493b0 <_Thread_Start>:
*/
RTEMS_INLINE_ROUTINE bool _States_Is_dormant (
States_Control the_states
)
{
return (the_states & STATES_DORMANT);
493b0: 7001 moveq #1,%d0
Thread_Start_types the_prototype,
void *entry_point,
void *pointer_argument,
Thread_Entry_numeric_type numeric_argument
)
{
493b2: 4e56 0000 linkw %fp,#0
493b6: 2f0a movel %a2,%sp@-
493b8: 246e 0008 moveal %fp@(8),%a2
493bc: c0aa 0010 andl %a2@(16),%d0
if ( _States_Is_dormant( the_thread->current_state ) ) {
493c0: 660a bnes 493cc <_Thread_Start+0x1c> <== ALWAYS TAKEN
return true;
}
return false;
}
493c2: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
493c6: 4e5e unlk %fp <== NOT EXECUTED
_User_extensions_Thread_start( the_thread );
return true;
}
return false;
493c8: 4200 clrb %d0 <== NOT EXECUTED
}
493ca: 4e75 rts <== NOT EXECUTED
the_thread->Start.prototype = the_prototype;
the_thread->Start.pointer_argument = pointer_argument;
the_thread->Start.numeric_argument = numeric_argument;
_Thread_Load_environment( the_thread );
493cc: 2f0a movel %a2,%sp@-
Thread_Entry_numeric_type numeric_argument
)
{
if ( _States_Is_dormant( the_thread->current_state ) ) {
the_thread->Start.entry_point = (Thread_Entry) entry_point;
493ce: 256e 0010 008e movel %fp@(16),%a2@(142)
the_thread->Start.prototype = the_prototype;
493d4: 256e 000c 0092 movel %fp@(12),%a2@(146)
the_thread->Start.pointer_argument = pointer_argument;
493da: 256e 0014 0096 movel %fp@(20),%a2@(150)
the_thread->Start.numeric_argument = numeric_argument;
493e0: 256e 0018 009a movel %fp@(24),%a2@(154)
_Thread_Load_environment( the_thread );
493e6: 4eb9 0004 bf9c jsr 4bf9c <_Thread_Load_environment>
_Thread_Ready( the_thread );
493ec: 2f0a movel %a2,%sp@-
493ee: 4eb9 0004 c280 jsr 4c280 <_Thread_Ready>
_User_extensions_Thread_start( the_thread );
493f4: 2f0a movel %a2,%sp@-
493f6: 4eb9 0004 9780 jsr 49780 <_User_extensions_Thread_start>
return true;
}
return false;
}
493fc: 246e fffc moveal %fp@(-4),%a2
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
49400: 4fef 000c lea %sp@(12),%sp
}
return false;
}
49404: 4e5e unlk %fp
_Thread_Ready( the_thread );
_User_extensions_Thread_start( the_thread );
return true;
49406: 7001 moveq #1,%d0
}
return false;
}
...
0004940c <_Thread_Suspend>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4940c: 203c 0000 0700 movel #1792,%d0
*/
void _Thread_Suspend(
Thread_Control *the_thread
)
{
49412: 4e56 0000 linkw %fp,#0
49416: 206e 0008 moveal %fp@(8),%a0
4941a: 2f02 movel %d2,%sp@-
ISR_Level level;
_ISR_Disable( level );
4941c: 40c2 movew %sr,%d2
4941e: 8082 orl %d2,%d0
49420: 46c0 movew %d0,%sr
if ( !_States_Is_ready( the_thread->current_state ) ) {
49422: 2028 0010 movel %a0@(16),%d0
49426: 6712 beqs 4943a <_Thread_Suspend+0x2e> <== ALWAYS TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Set (
States_Control states_to_set,
States_Control current_state
)
{
return (current_state | states_to_set);
49428: 7202 moveq #2,%d1 <== NOT EXECUTED
4942a: 8280 orl %d0,%d1 <== NOT EXECUTED
4942c: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
the_thread->current_state =
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
49430: 46c2 movew %d2,%sr <== NOT EXECUTED
the_thread->current_state = STATES_SUSPENDED;
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
}
49432: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
49436: 4e5e unlk %fp <== NOT EXECUTED
49438: 4e75 rts <== NOT EXECUTED
4943a: 2f08 movel %a0,%sp@-
4943c: 4879 0005 e5be pea 5e5be <_Scheduler>
_States_Set( STATES_SUSPENDED, the_thread->current_state );
_ISR_Enable( level );
return;
}
the_thread->current_state = STATES_SUSPENDED;
49442: 7002 moveq #2,%d0
49444: 2140 0010 movel %d0,%a0@(16)
49448: 2079 0005 e5ca moveal 5e5ca <_Scheduler+0xc>,%a0
4944e: 4e90 jsr %a0@
_Scheduler_Block(&_Scheduler, the_thread);
_ISR_Enable( level );
49450: 46c2 movew %d2,%sr
49452: 508f addql #8,%sp
}
49454: 242e fffc movel %fp@(-4),%d2
49458: 4e5e unlk %fp <== NOT EXECUTED
0004945c <_Thread_Tickle_timeslice>:
*
* Output parameters: NONE
*/
void _Thread_Tickle_timeslice( void )
{
4945c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
49460: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Thread_Control *executing;
executing = _Thread_Executing;
49462: 2479 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
/*
* If the thread is not preemptible or is not ready, then
* just return.
*/
if ( !executing->is_preemptible )
49468: 4a2a 0074 tstb %a2@(116) <== NOT EXECUTED
4946c: 670e beqs 4947c <_Thread_Tickle_timeslice+0x20> <== NOT EXECUTED
return;
if ( !_States_Is_ready( executing->current_state ) )
4946e: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
49472: 6608 bnes 4947c <_Thread_Tickle_timeslice+0x20> <== NOT EXECUTED
/*
* The cpu budget algorithm determines what happens next.
*/
switch ( executing->budget_algorithm ) {
49474: 7001 moveq #1,%d0 <== NOT EXECUTED
49476: b0aa 007a cmpl %a2@(122),%d0 <== NOT EXECUTED
4947a: 6708 beqs 49484 <_Thread_Tickle_timeslice+0x28> <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
4947c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49480: 4e5e unlk %fp <== NOT EXECUTED
49482: 4e75 rts <== NOT EXECUTED
case THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE:
#if defined(RTEMS_SCORE_THREAD_ENABLE_EXHAUST_TIMESLICE)
case THREAD_CPU_BUDGET_ALGORITHM_EXHAUST_TIMESLICE:
#endif
if ( (int)(--executing->cpu_time_budget) <= 0 ) {
49484: 202a 0076 movel %a2@(118),%d0 <== NOT EXECUTED
49488: 5380 subql #1,%d0 <== NOT EXECUTED
4948a: 2540 0076 movel %d0,%a2@(118) <== NOT EXECUTED
4948e: 6eec bgts 4947c <_Thread_Tickle_timeslice+0x20> <== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
49490: 4879 0005 e5be pea 5e5be <_Scheduler> <== NOT EXECUTED
49496: 2079 0005 e5c6 moveal 5e5c6 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
4949c: 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;
4949e: 588f addql #4,%sp <== NOT EXECUTED
494a0: 41f9 0005 e4f0 lea 5e4f0 <_Thread_Ticks_per_timeslice>,%a0 <== NOT EXECUTED
494a6: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
if ( --executing->cpu_time_budget == 0 )
(*executing->budget_callout)( executing );
break;
#endif
}
}
494aa: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
494ae: 4e5e unlk %fp <== NOT EXECUTED
...
000483bc <_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 ) ) {
483bc: 7202 moveq #2,%d1 <== NOT EXECUTED
Thread_blocking_operation_States sync_state __attribute__((unused)),
#endif
Thread_Control *the_thread,
ISR_Level level
)
{
483be: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
483c2: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
483c6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
483c8: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
#endif
/*
* The thread is not waiting on anything after this completes.
*/
the_thread->Wait.queue = NULL;
483cc: 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 ) ) {
483d0: b2aa 0050 cmpl %a2@(80),%d1 <== NOT EXECUTED
483d4: 671c beqs 483f2 <_Thread_blocking_operation_Cancel+0x36><== NOT EXECUTED
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
(void) _Watchdog_Remove( &the_thread->Timer );
} else
_ISR_Enable( level );
483d6: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
483d8: 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
}
483dc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
483e0: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
483e6: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
483ea: 4e5e unlk %fp <== NOT EXECUTED
483ec: 4ef9 0004 8564 jmp 48564 <_Thread_Clear_state> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
483f2: 123c 0003 moveb #3,%d1 <== NOT EXECUTED
483f6: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
* If the sync state is timed out, this is very likely not needed.
* But better safe than sorry when it comes to critical sections.
*/
if ( _Watchdog_Is_active( &the_thread->Timer ) ) {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
483fa: 46c0 movew %d0,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
483fc: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48400: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove> <== NOT EXECUTED
48406: 588f addql #4,%sp <== NOT EXECUTED
48408: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4840e: 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
}
48412: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
48416: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4841a: 4e5e unlk %fp <== NOT EXECUTED
4841c: 4ef9 0004 8564 jmp 48564 <_Thread_Clear_state> <== NOT EXECUTED
...
00048c60 <_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;
48c60: 41f9 0004 c018 lea 4c018 <_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 )
48c66: 7001 moveq #1,%d0
*/
Thread_Control *_Thread_queue_Dequeue(
Thread_queue_Control *the_thread_queue
)
{
48c68: 4e56 fff4 linkw %fp,#-12
48c6c: 48d7 040c moveml %d2-%d3/%a2,%sp@
48c70: 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 )
48c74: b0aa 0034 cmpl %a2@(52),%d0
48c78: 6722 beqs 48c9c <_Thread_queue_Dequeue+0x3c>
dequeue_p = _Thread_queue_Dequeue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
dequeue_p = _Thread_queue_Dequeue_fifo;
the_thread = (*dequeue_p)( the_thread_queue );
48c7a: 2f0a movel %a2,%sp@-
48c7c: 4e90 jsr %a0@
_ISR_Disable( level );
48c7e: 223c 0000 0700 movel #1792,%d1
48c84: 40c2 movew %sr,%d2
48c86: 8282 orl %d2,%d1
48c88: 46c1 movew %d1,%sr
if ( !the_thread ) {
48c8a: 588f addql #4,%sp
48c8c: 4a80 tstl %d0
48c8e: 6728 beqs 48cb8 <_Thread_queue_Dequeue+0x58> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48c90: 46c2 movew %d2,%sr
return the_thread;
}
48c92: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
48c98: 4e5e unlk %fp
48c9a: 4e75 rts
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
dequeue_p = _Thread_queue_Dequeue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
dequeue_p = _Thread_queue_Dequeue_fifo;
the_thread = (*dequeue_p)( the_thread_queue );
48c9c: 2f0a movel %a2,%sp@-
Thread_Control *the_thread;
ISR_Level level;
Thread_blocking_operation_States sync_state;
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
dequeue_p = _Thread_queue_Dequeue_priority;
48c9e: 41f9 0004 8cdc lea 48cdc <_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 );
48ca4: 4e90 jsr %a0@
_ISR_Disable( level );
48ca6: 223c 0000 0700 movel #1792,%d1
48cac: 40c2 movew %sr,%d2
48cae: 8282 orl %d2,%d1
48cb0: 46c1 movew %d1,%sr
if ( !the_thread ) {
48cb2: 588f addql #4,%sp
48cb4: 4a80 tstl %d0
48cb6: 66d8 bnes 48c90 <_Thread_queue_Dequeue+0x30>
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
48cb8: 222a 0030 movel %a2@(48),%d1
48cbc: 7601 moveq #1,%d3
48cbe: 5381 subql #1,%d1
48cc0: b681 cmpl %d1,%d3
48cc2: 65cc bcss 48c90 <_Thread_queue_Dequeue+0x30> <== ALWAYS TAKEN
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48cc4: 7203 moveq #3,%d1 <== NOT EXECUTED
the_thread = _Thread_Executing;
48cc6: 2039 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
_ISR_Disable( level );
if ( !the_thread ) {
sync_state = the_thread_queue->sync_state;
if ( (sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||
(sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) ) {
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;
48ccc: 2541 0030 movel %d1,%a2@(48) <== NOT EXECUTED
the_thread = _Thread_Executing;
}
}
_ISR_Enable( level );
48cd0: 46c2 movew %d2,%sr <== NOT EXECUTED
return the_thread;
}
48cd2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48cd8: 4e5e unlk %fp <== NOT EXECUTED
0004c018 <_Thread_queue_Dequeue_fifo>:
)
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4c018: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_fifo(
Thread_queue_Control *the_thread_queue
)
{
4c01e: 4e56 0000 linkw %fp,#0
4c022: 226e 0008 moveal %fp@(8),%a1
4c026: 2f0b movel %a3,%sp@-
4c028: 2f0a movel %a2,%sp@-
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
4c02a: 40c1 movew %sr,%d1
4c02c: 8081 orl %d1,%d0
4c02e: 46c0 movew %d0,%sr
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4c030: 2049 moveal %a1,%a0
4c032: 2458 moveal %a0@+,%a2
{
ISR_Level level;
Thread_Control *the_thread;
_ISR_Disable( level );
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
4c034: b1ca cmpal %a2,%a0
4c036: 6768 beqs 4c0a0 <_Thread_queue_Dequeue_fifo+0x88><== ALWAYS TAKEN
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
4c038: 2052 moveal %a2@,%a0 <== NOT EXECUTED
the_thread = (Thread_Control *)
4c03a: 264a moveal %a2,%a3 <== NOT EXECUTED
_Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo );
the_thread->Wait.queue = NULL;
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4c03c: 7002 moveq #2,%d0 <== NOT EXECUTED
head->next = new_first;
4c03e: 2288 movel %a0,%a1@ <== NOT EXECUTED
new_first->previous = head;
4c040: 2149 0004 movel %a1,%a0@(4) <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) ) {
the_thread = (Thread_Control *)
_Chain_Get_first_unprotected( &the_thread_queue->Queues.Fifo );
the_thread->Wait.queue = NULL;
4c044: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4c048: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4c04c: 6720 beqs 4c06e <_Thread_queue_Dequeue_fifo+0x56><== NOT EXECUTED
_ISR_Enable( level );
4c04e: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4c050: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4c056: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c058: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4c05e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4c062: 200b movel %a3,%d0 <== NOT EXECUTED
4c064: 508f addql #8,%sp <== NOT EXECUTED
4c066: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4c06a: 4e5e unlk %fp <== NOT EXECUTED
4c06c: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
4c06e: 7003 moveq #3,%d0 <== NOT EXECUTED
4c070: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4c074: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4c076: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4c07a: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove> <== NOT EXECUTED
4c080: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
4c086: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c088: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state> <== NOT EXECUTED
return the_thread;
}
_ISR_Enable( level );
return NULL;
}
4c08e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4c092: 200b movel %a3,%d0 <== NOT EXECUTED
4c094: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4c098: 266e fffc moveal %fp@(-4),%a3 <== NOT EXECUTED
4c09c: 4e5e unlk %fp <== NOT EXECUTED
4c09e: 4e75 rts <== NOT EXECUTED
#endif
return the_thread;
}
_ISR_Enable( level );
4c0a0: 46c1 movew %d1,%sr
return NULL;
4c0a2: 97cb subal %a3,%a3
}
4c0a4: 200b movel %a3,%d0
4c0a6: 246e fff8 moveal %fp@(-8),%a2
4c0aa: 266e fffc moveal %fp@(-4),%a3
4c0ae: 4e5e unlk %fp
...
00048cdc <_Thread_queue_Dequeue_priority>:
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48cdc: 203c 0000 0700 movel #1792,%d0
*/
Thread_Control *_Thread_queue_Dequeue_priority(
Thread_queue_Control *the_thread_queue
)
{
48ce2: 4e56 ffe8 linkw %fp,#-24
48ce6: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@
48cea: 266e 0008 moveal %fp@(8),%a3
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48cee: 40c3 movew %sr,%d3
48cf0: 8083 orl %d3,%d0
48cf2: 46c0 movew %d0,%sr
for( index=0 ;
48cf4: 4280 clrl %d0
Chain_Node *new_second_node;
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
48cf6: 204b moveal %a3,%a0
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
48cf8: 2400 movel %d0,%d2
48cfa: 2200 movel %d0,%d1
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48cfc: 5280 addql #1,%d0
48cfe: e58a lsll #2,%d2
48d00: e989 lsll #4,%d1
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48d02: 2450 moveal %a0@,%a2
48d04: 9282 subl %d2,%d1
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
48d06: 41e8 000c lea %a0@(12),%a0
48d0a: 43f3 1804 lea %a3@(00000004,%d1:l),%a1
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
48d0e: b3ca cmpal %a2,%a1
48d10: 6616 bnes 48d28 <_Thread_queue_Dequeue_priority+0x4c>
Chain_Node *last_node;
Chain_Node *next_node;
Chain_Node *previous_node;
_ISR_Disable( level );
for( index=0 ;
48d12: 7204 moveq #4,%d1
48d14: b280 cmpl %d0,%d1
48d16: 66e0 bnes 48cf8 <_Thread_queue_Dequeue_priority+0x1c>
}
/*
* We did not find a thread to unblock.
*/
_ISR_Enable( level );
48d18: 46c3 movew %d3,%sr
return NULL;
48d1a: 4282 clrl %d2
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48d1c: 2002 movel %d2,%d0
48d1e: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
48d24: 4e5e unlk %fp
48d26: 4e75 rts
48d28: 200a movel %a2,%d0
_ISR_Disable( level );
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) ) {
the_thread = (Thread_Control *) _Chain_First(
48d2a: 240a movel %a2,%d2
48d2c: 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 );
}
48d32: 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;
48d36: 2252 moveal %a2@,%a1
previous_node = the_thread->Object.Node.previous;
48d38: 266a 0004 moveal %a2@(4),%a3
*/
_ISR_Enable( level );
return NULL;
dequeue:
the_thread->Wait.queue = NULL;
48d3c: 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 ) ) {
48d40: b088 cmpl %a0,%d0
48d42: 6700 008a beqw 48dce <_Thread_queue_Dequeue_priority+0xf2>
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48d46: 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;
48d4a: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
48d4c: 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;
48d50: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
48d52: 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;
48d56: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
48d58: 226a 0040 moveal %a2@(64),%a1 <== NOT EXECUTED
48d5c: b3ea 0038 cmpal %a2@(56),%a1 <== NOT EXECUTED
48d60: 6716 beqs 48d78 <_Thread_queue_Dequeue_priority+0x9c><== NOT EXECUTED
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
48d62: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
48d66: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED
48d6a: 2889 movel %a1,%a4@ <== NOT EXECUTED
new_first_node->next = next_node;
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
48d6c: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
48d70: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
tail->previous = last_node;
48d74: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED
} else {
previous_node->next = next_node;
next_node->previous = previous_node;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
48d78: 7002 moveq #2,%d0
48d7a: b0aa 0050 cmpl %a2@(80),%d0
48d7e: 671e beqs 48d9e <_Thread_queue_Dequeue_priority+0xc2><== NEVER TAKEN
_ISR_Enable( level );
48d80: 46c3 movew %d3,%sr
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
48d82: 2f3c 1003 fff8 movel #268697592,%sp@-
48d88: 2f0a movel %a2,%sp@-
48d8a: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state>
48d90: 508f addql #8,%sp
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
return( the_thread );
}
48d92: 2002 movel %d2,%d0
48d94: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5
48d9a: 4e5e unlk %fp
48d9c: 4e75 rts
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_REMOVE_IT;
48d9e: 7203 moveq #3,%d1 <== NOT EXECUTED
48da0: 2541 0050 movel %d1,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
_Thread_Unblock( the_thread );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
48da4: 46c3 movew %d3,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
48da6: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48daa: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove> <== NOT EXECUTED
48db0: 2f3c 1003 fff8 movel #268697592,%sp@- <== NOT EXECUTED
48db6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48db8: 4eb9 0004 8564 jsr 48564 <_Thread_Clear_state> <== NOT EXECUTED
48dbe: 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 );
}
48dc2: 2002 movel %d2,%d0 <== NOT EXECUTED
48dc4: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
48dca: 4e5e unlk %fp <== NOT EXECUTED
48dcc: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
48dce: 2689 movel %a1,%a3@
next_node->previous = previous_node;
48dd0: 234b 0004 movel %a3,%a1@(4)
48dd4: 60a2 bras 48d78 <_Thread_queue_Dequeue_priority+0x9c>
...
0004c0b4 <_Thread_queue_Enqueue_fifo>:
)
{
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4c0b4: 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
)
{
4c0ba: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c0be: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4c0c2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4c0c4: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4c0c8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Thread_blocking_operation_States sync_state;
ISR_Level level;
_ISR_Disable( level );
4c0ca: 40c1 movew %sr,%d1 <== NOT EXECUTED
4c0cc: 8081 orl %d1,%d0 <== NOT EXECUTED
4c0ce: 46c0 movew %d0,%sr <== NOT EXECUTED
sync_state = the_thread_queue->sync_state;
4c0d0: 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) {
4c0d4: 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;
4c0d6: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
4c0da: b480 cmpl %d0,%d2 <== NOT EXECUTED
4c0dc: 670e beqs 4c0ec <_Thread_queue_Enqueue_fifo+0x38><== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return sync_state;
}
4c0de: 241f movel %sp@+,%d2 <== NOT EXECUTED
* For example, the blocking thread could have been given
* the mutex by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
4c0e0: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
return sync_state;
}
4c0e4: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4c0e6: 4e5e unlk %fp <== NOT EXECUTED
* For example, the blocking thread could have been given
* the mutex by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
4c0e8: 2081 movel %d1,%a0@ <== NOT EXECUTED
return sync_state;
}
4c0ea: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
4c0ec: 2408 movel %a0,%d2 <== NOT EXECUTED
4c0ee: 5882 addql #4,%d2 <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
4c0f0: 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 );
4c0f4: 2282 movel %d2,%a1@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
4c0f6: 2149 0008 movel %a1,%a0@(8) <== NOT EXECUTED
old_last->next = the_node;
4c0fa: 2489 movel %a1,%a2@ <== NOT EXECUTED
the_node->previous = old_last;
4c0fc: 234a 0004 movel %a2,%a1@(4) <== NOT EXECUTED
if (sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED) {
_Chain_Append_unprotected(
&the_thread_queue->Queues.Fifo,
&the_thread->Object.Node
);
the_thread->Wait.queue = the_thread_queue;
4c100: 2348 0044 movel %a0,%a1@(68) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
_ISR_Enable( level );
4c104: 46c1 movew %d1,%sr <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return sync_state;
}
4c106: 241f movel %sp@+,%d2 <== NOT EXECUTED
4c108: 245f moveal %sp@+,%a2 <== NOT EXECUTED
4c10a: 4e5e unlk %fp <== NOT EXECUTED
...
00048e80 <_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
)
{
48e80: 4e56 ffe0 linkw %fp,#-32
48e84: 48d7 1c7c moveml %d2-%d6/%a2-%a4,%sp@
48e88: 246e 000c moveal %fp@(12),%a2
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
48e8c: 41ea 003c lea %a2@(60),%a0
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48e90: 49ea 0038 lea %a2@(56),%a4
48e94: 266e 0008 moveal %fp@(8),%a3
Priority_Control priority;
States_Control block_state;
_Chain_Initialize_empty( &the_thread->Wait.Block2n );
priority = the_thread->current_priority;
48e98: 222a 0014 movel %a2@(20),%d1
RTEMS_INLINE_ROUTINE uint32_t _Thread_queue_Header_number (
Priority_Control the_priority
)
{
return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);
48e9c: 2a01 movel %d1,%d5
48e9e: ec8d lsrl #6,%d5
header_index = _Thread_queue_Header_number( priority );
header = &the_thread_queue->Queues.Priority[ header_index ];
block_state = the_thread_queue->state;
48ea0: 242b 0038 movel %a3@(56),%d2
Chain_Node *tail = _Chain_Tail( the_chain );
48ea4: 2548 0038 movel %a0,%a2@(56)
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
48ea8: 254c 0040 movel %a4,%a2@(64)
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
48eac: 42aa 003c clrl %a2@(60)
if ( _Thread_queue_Is_reverse_search( priority ) )
48eb0: 0801 0005 btst #5,%d1
48eb4: 665e bnes 48f14 <_Thread_queue_Enqueue_priority+0x94>
48eb6: 700c moveq #12,%d0
48eb8: 4c00 5800 mulsl %d0,%d5
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48ebc: 2c3c 0000 0700 movel #1792,%d6
48ec2: 2006 movel %d6,%d0
RTEMS_INLINE_ROUTINE bool _Chain_Is_tail(
Chain_Control *the_chain,
const Chain_Node *the_node
)
{
return (the_node == _Chain_Tail(the_chain));
48ec4: 49f3 5804 lea %a3@(00000004,%d5:l),%a4
48ec8: 40c3 movew %sr,%d3
48eca: 8083 orl %d3,%d0
48ecc: 46c0 movew %d0,%sr
48ece: 2803 movel %d3,%d4
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48ed0: 2073 5800 moveal %a3@(00000000,%d5:l),%a0
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48ed4: b9c8 cmpal %a0,%a4
48ed6: 6700 013a beqw 49012 <_Thread_queue_Enqueue_priority+0x192>
search_priority = search_thread->current_priority;
48eda: 2268 0014 moveal %a0@(20),%a1
if ( priority <= search_priority )
48ede: b3c1 cmpal %d1,%a1
48ee0: 6418 bccs 48efa <_Thread_queue_Enqueue_priority+0x7a>
break;
search_priority = search_thread->current_priority;
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
48ee2: 2006 movel %d6,%d0
48ee4: 46c3 movew %d3,%sr
48ee6: 8083 orl %d3,%d0
48ee8: 46c0 movew %d0,%sr
RTEMS_INLINE_ROUTINE bool _States_Are_set (
States_Control the_states,
States_Control mask
)
{
return ( (the_states & mask) != STATES_READY);
48eea: 2002 movel %d2,%d0
48eec: c0a8 0010 andl %a0@(16),%d0
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48ef0: 6700 00be beqw 48fb0 <_Thread_queue_Enqueue_priority+0x130>
_ISR_Enable( level );
goto restart_forward_search;
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
48ef4: 2050 moveal %a0@,%a0
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48ef6: b9c8 cmpal %a0,%a4
48ef8: 66e0 bnes 48eda <_Thread_queue_Enqueue_priority+0x5a>
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
48efa: 202b 0030 movel %a3@(48),%d0
48efe: 7401 moveq #1,%d2
48f00: b480 cmpl %d0,%d2
48f02: 6700 00c4 beqw 48fc8 <_Thread_queue_Enqueue_priority+0x148>
* For example, the blocking thread could have been given
* the mutex by an ISR or timed out.
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
48f06: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
48f0a: 2084 movel %d4,%a0@ <== NOT EXECUTED
return the_thread_queue->sync_state;
}
48f0c: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED
48f10: 4e5e unlk %fp <== NOT EXECUTED
48f12: 4e75 rts <== NOT EXECUTED
48f14: 700c moveq #12,%d0
48f16: 4c00 5800 mulsl %d0,%d5
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48f1a: 4283 clrl %d3
48f1c: 1639 0005 cd12 moveb 5cd12 <rtems_maximum_priority>,%d3
_ISR_Disable( level );
48f22: 2c3c 0000 0700 movel #1792,%d6
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f28: da8b addl %a3,%d5
48f2a: 2845 moveal %d5,%a4
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48f2c: 2243 moveal %d3,%a1
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f2e: 508c addql #8,%a4
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
48f30: 2006 movel %d6,%d0
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48f32: 5289 addql #1,%a1
_ISR_Disable( level );
48f34: 40c3 movew %sr,%d3
48f36: 8083 orl %d3,%d0
48f38: 46c0 movew %d0,%sr
48f3a: 2803 movel %d3,%d4
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f3c: 2054 moveal %a4@,%a0
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48f3e: ba88 cmpl %a0,%d5
48f40: 6720 beqs 48f62 <_Thread_queue_Enqueue_priority+0xe2>
search_priority = search_thread->current_priority;
48f42: 2268 0014 moveal %a0@(20),%a1
if ( priority >= search_priority )
48f46: b3c1 cmpal %d1,%a1
48f48: 6318 blss 48f62 <_Thread_queue_Enqueue_priority+0xe2><== ALWAYS TAKEN
break;
search_priority = search_thread->current_priority;
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
48f4a: 2006 movel %d6,%d0 <== NOT EXECUTED
48f4c: 46c3 movew %d3,%sr <== NOT EXECUTED
48f4e: 8083 orl %d3,%d0 <== NOT EXECUTED
48f50: 46c0 movew %d0,%sr <== NOT EXECUTED
48f52: 2002 movel %d2,%d0 <== NOT EXECUTED
48f54: c0a8 0010 andl %a0@(16),%d0 <== NOT EXECUTED
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
48f58: 6736 beqs 48f90 <_Thread_queue_Enqueue_priority+0x110><== NOT EXECUTED
_ISR_Enable( level );
goto restart_reverse_search;
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
48f5a: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48f5e: ba88 cmpl %a0,%d5 <== NOT EXECUTED
48f60: 66e0 bnes 48f42 <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
}
search_thread = (Thread_Control *)
search_thread->Object.Node.previous;
}
if ( the_thread_queue->sync_state !=
48f62: 202b 0030 movel %a3@(48),%d0
48f66: 7401 moveq #1,%d2
48f68: b480 cmpl %d0,%d2
48f6a: 669a bnes 48f06 <_Thread_queue_Enqueue_priority+0x86><== NEVER TAKEN
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48f6c: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48f70: b3c1 cmpal %d1,%a1
48f72: 677a beqs 48fee <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
48f74: 2250 moveal %a0@,%a1
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
48f76: 2548 0004 movel %a0,%a2@(4)
search_node = (Chain_Node *) search_thread;
next_node = search_node->next;
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
48f7a: 2489 movel %a1,%a2@
the_node->previous = search_node;
search_node->next = the_node;
next_node->previous = the_node;
48f7c: 234a 0004 movel %a2,%a1@(4)
next_node = search_node->next;
the_node = (Chain_Node *) the_thread;
the_node->next = next_node;
the_node->previous = search_node;
search_node->next = the_node;
48f80: 208a movel %a2,%a0@
next_node->previous = the_node;
the_thread->Wait.queue = the_thread_queue;
48f82: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48f86: 46c3 movew %d3,%sr
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48f88: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
48f8c: 4e5e unlk %fp
48f8e: 4e75 rts
if ( priority >= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
48f90: 46c3 movew %d3,%sr <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48f92: 4283 clrl %d3 <== NOT EXECUTED
48f94: 1639 0005 cd12 moveb 5cd12 <rtems_maximum_priority>,%d3 <== NOT EXECUTED
_ISR_Disable( level );
48f9a: 2006 movel %d6,%d0 <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
48f9c: 2243 moveal %d3,%a1 <== NOT EXECUTED
48f9e: 5289 addql #1,%a1 <== NOT EXECUTED
_ISR_Disable( level );
48fa0: 40c3 movew %sr,%d3 <== NOT EXECUTED
48fa2: 8083 orl %d3,%d0 <== NOT EXECUTED
48fa4: 46c0 movew %d0,%sr <== NOT EXECUTED
48fa6: 2803 movel %d3,%d4 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48fa8: 2054 moveal %a4@,%a0 <== NOT EXECUTED
restart_reverse_search:
search_priority = PRIORITY_MAXIMUM + 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_Last( header );
while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {
48faa: ba88 cmpl %a0,%d5 <== NOT EXECUTED
48fac: 6694 bnes 48f42 <_Thread_queue_Enqueue_priority+0xc2><== NOT EXECUTED
48fae: 60b2 bras 48f62 <_Thread_queue_Enqueue_priority+0xe2><== NOT EXECUTED
if ( priority <= search_priority )
break;
#endif
_ISR_Flash( level );
if ( !_States_Are_set( search_thread->current_state, block_state) ) {
_ISR_Enable( level );
48fb0: 46c3 movew %d3,%sr <== NOT EXECUTED
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
48fb2: 2006 movel %d6,%d0 <== NOT EXECUTED
48fb4: 40c3 movew %sr,%d3 <== NOT EXECUTED
48fb6: 8083 orl %d3,%d0 <== NOT EXECUTED
48fb8: 46c0 movew %d0,%sr <== NOT EXECUTED
48fba: 2803 movel %d3,%d4 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48fbc: 2073 5800 moveal %a3@(00000000,%d5:l),%a0 <== NOT EXECUTED
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
_ISR_Disable( level );
search_thread = (Thread_Control *) _Chain_First( header );
while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {
48fc0: b9c8 cmpal %a0,%a4 <== NOT EXECUTED
48fc2: 6600 ff16 bnew 48eda <_Thread_queue_Enqueue_priority+0x5a><== NOT EXECUTED
48fc6: 604a bras 49012 <_Thread_queue_Enqueue_priority+0x192><== NOT EXECUTED
if ( the_thread_queue->sync_state !=
THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
goto synchronize;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
48fc8: 42ab 0030 clrl %a3@(48)
if ( priority == search_priority )
48fcc: b3c1 cmpal %d1,%a1
48fce: 671e beqs 48fee <_Thread_queue_Enqueue_priority+0x16e><== NEVER TAKEN
goto equal_priority;
search_node = (Chain_Node *) search_thread;
previous_node = search_node->previous;
48fd0: 2268 0004 moveal %a0@(4),%a1
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
48fd4: 2488 movel %a0,%a2@
the_node->previous = previous_node;
48fd6: 2549 0004 movel %a1,%a2@(4)
previous_node->next = the_node;
48fda: 228a movel %a2,%a1@
search_node->previous = the_node;
48fdc: 214a 0004 movel %a2,%a0@(4)
the_thread->Wait.queue = the_thread_queue;
48fe0: 254b 0044 movel %a3,%a2@(68)
_ISR_Enable( level );
48fe4: 46c3 movew %d3,%sr
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
48fe6: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4
48fea: 4e5e unlk %fp
48fec: 4e75 rts
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
48fee: 49e8 003c lea %a0@(60),%a4 <== NOT EXECUTED
previous_node = search_node->previous;
48ff2: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
_ISR_Enable( level );
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
equal_priority: /* add at end of priority group */
search_node = _Chain_Tail( &search_thread->Wait.Block2n );
48ff6: 248c movel %a4,%a2@ <== NOT EXECUTED
previous_node = search_node->previous;
the_node = (Chain_Node *) the_thread;
the_node->next = search_node;
the_node->previous = previous_node;
48ff8: 2549 0004 movel %a1,%a2@(4) <== NOT EXECUTED
previous_node->next = the_node;
48ffc: 228a movel %a2,%a1@ <== NOT EXECUTED
search_node->previous = the_node;
48ffe: 214a 0040 movel %a2,%a0@(64) <== NOT EXECUTED
the_thread->Wait.queue = the_thread_queue;
49002: 254b 0044 movel %a3,%a2@(68) <== NOT EXECUTED
_ISR_Enable( level );
49006: 46c4 movew %d4,%sr <== NOT EXECUTED
return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
49008: 7001 moveq #1,%d0 <== NOT EXECUTED
*
* WARNING! Returning with interrupts disabled!
*/
*level_p = level;
return the_thread_queue->sync_state;
}
4900a: 4cd7 1c7c moveml %sp@,%d2-%d6/%a2-%a4 <== NOT EXECUTED
4900e: 4e5e unlk %fp <== NOT EXECUTED
49010: 4e75 rts <== NOT EXECUTED
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
49012: 202b 0030 movel %a3@(48),%d0
if ( _Thread_queue_Is_reverse_search( priority ) )
goto restart_reverse_search;
restart_forward_search:
search_priority = PRIORITY_MINIMUM - 1;
49016: 327c ffff moveaw #-1,%a1
}
search_thread =
(Thread_Control *)search_thread->Object.Node.next;
}
if ( the_thread_queue->sync_state !=
4901a: 7401 moveq #1,%d2
4901c: b480 cmpl %d0,%d2
4901e: 6600 fee6 bnew 48f06 <_Thread_queue_Enqueue_priority+0x86>
49022: 60a4 bras 48fc8 <_Thread_queue_Enqueue_priority+0x148>
00048dd8 <_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
)
{
48dd8: 4e56 fff0 linkw %fp,#-16
48ddc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
48de0: 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 );
48de4: 2f2b 0038 movel %a3@(56),%sp@-
Thread_queue_Control *,
Thread_Control *,
ISR_Level *
);
the_thread = _Thread_Executing;
48de8: 2479 0005 e6f8 moveal 5e6f8 <_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
)
{
48dee: 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 );
48df2: 2f0a movel %a2,%sp@-
48df4: 4eb9 0004 91fc jsr 491fc <_Thread_Set_state>
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
48dfa: 508f addql #8,%sp
48dfc: 4a82 tstl %d2
48dfe: 663e bnes 48e3e <_Thread_queue_Enqueue_with_handler+0x66><== NEVER TAKEN
* Now enqueue the thread per the discipline for this thread queue.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
enqueue_p = _Thread_queue_Enqueue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
enqueue_p = _Thread_queue_Enqueue_fifo;
48e00: 41f9 0004 c0b4 lea 4c0b4 <_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 )
48e06: 7001 moveq #1,%d0
48e08: b0ab 0034 cmpl %a3@(52),%d0
48e0c: 676a beqs 48e78 <_Thread_queue_Enqueue_with_handler+0xa0><== ALWAYS TAKEN
enqueue_p = _Thread_queue_Enqueue_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
enqueue_p = _Thread_queue_Enqueue_fifo;
sync_state = (*enqueue_p)( the_thread_queue, the_thread, &level );
48e0e: 486e fffc pea %fp@(-4)
48e12: 2f0a movel %a2,%sp@-
48e14: 2f0b movel %a3,%sp@-
48e16: 4e90 jsr %a0@
if ( sync_state != THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
48e18: 4fef 000c lea %sp@(12),%sp
48e1c: 7201 moveq #1,%d1
48e1e: b280 cmpl %d0,%d1
48e20: 6712 beqs 48e34 <_Thread_queue_Enqueue_with_handler+0x5c><== ALWAYS TAKEN
_Thread_blocking_operation_Cancel( sync_state, the_thread, level );
48e22: 2f2e fffc movel %fp@(-4),%sp@- <== NOT EXECUTED
48e26: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48e28: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48e2a: 4eb9 0004 83bc jsr 483bc <_Thread_blocking_operation_Cancel><== NOT EXECUTED
48e30: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
48e34: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
48e3a: 4e5e unlk %fp
48e3c: 4e75 rts
/*
* If the thread wants to timeout, then schedule its timer.
*/
if ( timeout ) {
_Watchdog_Initialize(
48e3e: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
48e42: 256e 0010 0064 movel %fp@(16),%a2@(100) <== NOT EXECUTED
the_watchdog->id = id;
48e48: 2540 0068 movel %d0,%a2@(104) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
48e4c: 42aa 0050 clrl %a2@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
48e50: 42aa 006c clrl %a2@(108) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
48e54: 2542 0054 movel %d2,%a2@(84) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
48e58: 486a 0048 pea %a2@(72) <== NOT EXECUTED
48e5c: 4879 0005 e618 pea 5e618 <_Watchdog_Ticks_chain> <== NOT EXECUTED
48e62: 4eb9 0004 9804 jsr 49804 <_Watchdog_Insert> <== NOT EXECUTED
48e68: 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;
48e6a: 41f9 0004 c0b4 lea 4c0b4 <_Thread_queue_Enqueue_fifo>,%a0 <== NOT EXECUTED
}
/*
* Now enqueue the thread per the discipline for this thread queue.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
48e70: 7001 moveq #1,%d0 <== NOT EXECUTED
48e72: b0ab 0034 cmpl %a3@(52),%d0 <== NOT EXECUTED
48e76: 6696 bnes 48e0e <_Thread_queue_Enqueue_with_handler+0x36><== NOT EXECUTED
enqueue_p = _Thread_queue_Enqueue_priority;
48e78: 41f9 0004 8e80 lea 48e80 <_Thread_queue_Enqueue_priority>,%a0
48e7e: 608e bras 48e0e <_Thread_queue_Enqueue_with_handler+0x36>
0004c110 <_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 )
4c110: 7201 moveq #1,%d1 <== NOT EXECUTED
void _Thread_queue_Extract(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
4c112: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c116: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4c11a: 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 )
4c11e: b2a8 0034 cmpl %a0@(52),%d1 <== NOT EXECUTED
4c122: 6710 beqs 4c134 <_Thread_queue_Extract+0x24> <== NOT EXECUTED
_Thread_queue_Extract_priority( the_thread_queue, the_thread );
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
4c124: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4c128: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
4c12c: 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 );
4c12e: 4ef9 0004 d7d8 jmp 4d7d8 <_Thread_queue_Extract_fifo> <== NOT EXECUTED
/*
* Can not use indirect function pointer here since Extract priority
* is a macro and the underlying methods do not have the same signature.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
_Thread_queue_Extract_priority( the_thread_queue, the_thread );
4c134: 42a7 clrl %sp@- <== NOT EXECUTED
4c136: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4c138: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c13a: 4eb9 0004 c148 jsr 4c148 <_Thread_queue_Extract_priority_helper><== NOT EXECUTED
4c140: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Thread_queue_Extract_fifo( the_thread_queue, the_thread );
}
4c144: 4e5e unlk %fp <== NOT EXECUTED
0004d7d8 <_Thread_queue_Extract_fifo>:
Thread_Control *the_thread
)
{
ISR_Level level;
_ISR_Disable( level );
4d7d8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Thread_queue_Extract_fifo(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread
)
{
4d7de: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d7e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d7e4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4d7e8: 40c1 movew %sr,%d1 <== NOT EXECUTED
4d7ea: 8081 orl %d1,%d0 <== NOT EXECUTED
4d7ec: 46c0 movew %d0,%sr <== NOT EXECUTED
4d7ee: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
4d7f2: 0280 0003 bee0 andil #245472,%d0 <== NOT EXECUTED
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4d7f8: 6734 beqs 4d82e <_Thread_queue_Extract_fifo+0x56><== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
4d7fa: 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 ) ) {
4d7fc: 7002 moveq #2,%d0 <== NOT EXECUTED
previous = the_node->previous;
4d7fe: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
next->previous = previous;
4d802: 2348 0004 movel %a0,%a1@(4) <== NOT EXECUTED
previous->next = next;
4d806: 2089 movel %a1,%a0@ <== NOT EXECUTED
return;
}
_Chain_Extract_unprotected( &the_thread->Object.Node );
the_thread->Wait.queue = NULL;
4d808: 42aa 0044 clrl %a2@(68) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4d80c: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4d810: 6726 beqs 4d838 <_Thread_queue_Extract_fifo+0x60><== NOT EXECUTED
_ISR_Enable( level );
4d812: 46c1 movew %d1,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_Unblock (
Thread_Control *the_thread
)
{
_Thread_Clear_state( the_thread, STATES_BLOCKED );
4d814: 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
}
4d818: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d81c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4d822: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4d826: 4e5e unlk %fp <== NOT EXECUTED
4d828: 4ef9 0004 8564 jmp 48564 <_Thread_Clear_state> <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_ISR_Enable( level );
4d82e: 46c1 movew %d1,%sr <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4d830: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d834: 4e5e unlk %fp <== NOT EXECUTED
4d836: 4e75 rts <== NOT EXECUTED
4d838: 7003 moveq #3,%d0 <== NOT EXECUTED
4d83a: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4d83e: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4d840: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4d844: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove> <== NOT EXECUTED
4d84a: 588f addql #4,%sp <== NOT EXECUTED
4d84c: 203c 1003 fff8 movel #268697592,%d0 <== NOT EXECUTED
4d852: 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
}
4d856: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4d85a: 2d40 000c movel %d0,%fp@(12) <== NOT EXECUTED
4d85e: 4e5e unlk %fp <== NOT EXECUTED
4d860: 4ef9 0004 8564 jmp 48564 <_Thread_Clear_state> <== NOT EXECUTED
...
0004c148 <_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 );
4c148: 203c 0000 0700 movel #1792,%d0
void _Thread_queue_Extract_priority_helper(
Thread_queue_Control *the_thread_queue __attribute__((unused)),
Thread_Control *the_thread,
bool requeuing
)
{
4c14e: 4e56 ffec linkw %fp,#-20
4c152: 48d7 3c04 moveml %d2/%a2-%a5,%sp@
4c156: 246e 000c moveal %fp@(12),%a2
4c15a: 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 );
4c15e: 40c1 movew %sr,%d1
4c160: 8081 orl %d1,%d0
4c162: 46c0 movew %d0,%sr
*/
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (
States_Control the_states
)
{
return (the_states & STATES_WAITING_ON_THREAD_QUEUE);
4c164: 202a 0010 movel %a2@(16),%d0
4c168: 0280 0003 bee0 andil #245472,%d0
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
4c16e: 677e beqs 4c1ee <_Thread_queue_Extract_priority_helper+0xa6><== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
4c170: 200a movel %a2,%d0
4c172: 0680 0000 003c addil #60,%d0
/*
* The thread was actually waiting on a thread queue so let's remove it.
*/
next_node = the_node->next;
4c178: 2252 moveal %a2@,%a1
previous_node = the_node->previous;
4c17a: 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
}
4c17e: 206a 0038 moveal %a2@(56),%a0
*/
next_node = the_node->next;
previous_node = the_node->previous;
if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {
4c182: b088 cmpl %a0,%d0
4c184: 6774 beqs 4c1fa <_Thread_queue_Extract_priority_helper+0xb2><== ALWAYS TAKEN
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4c186: 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;
4c18a: 2a50 moveal %a0@,%a5 <== NOT EXECUTED
previous_node->next = new_first_node;
next_node->previous = new_first_node;
4c18c: 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;
4c190: 2688 movel %a0,%a3@ <== NOT EXECUTED
next_node->previous = new_first_node;
new_first_node->next = next_node;
new_first_node->previous = previous_node;
4c192: 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;
4c196: 2089 movel %a1,%a0@ <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
4c198: 202a 0040 movel %a2@(64),%d0 <== NOT EXECUTED
4c19c: b0aa 0038 cmpl %a2@(56),%d0 <== NOT EXECUTED
4c1a0: 6716 beqs 4c1b8 <_Thread_queue_Extract_priority_helper+0x70><== NOT EXECUTED
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
4c1a2: 214d 0038 movel %a5,%a0@(56) <== NOT EXECUTED
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
4c1a6: 43e8 003c lea %a0@(60),%a1 <== NOT EXECUTED
4c1aa: 2889 movel %a1,%a4@ <== NOT EXECUTED
new_first_node->next = next_node;
new_first_node->previous = previous_node;
if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {
/* > two threads on 2-n */
head = _Chain_Head( &new_first_thread->Wait.Block2n );
4c1ac: 43e8 0038 lea %a0@(56),%a1 <== NOT EXECUTED
4c1b0: 2b49 0004 movel %a1,%a5@(4) <== NOT EXECUTED
tail = _Chain_Tail( &new_first_thread->Wait.Block2n );
new_second_node->previous = head;
head->next = new_second_node;
tail->previous = last_node;
4c1b4: 214c 0040 movel %a4,%a0@(64) <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4c1b8: 4a02 tstb %d2 <== NOT EXECUTED
4c1ba: 6626 bnes 4c1e2 <_Thread_queue_Extract_priority_helper+0x9a><== NOT EXECUTED
_ISR_Enable( level );
return;
}
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
4c1bc: 7002 moveq #2,%d0 <== NOT EXECUTED
4c1be: b0aa 0050 cmpl %a2@(80),%d0 <== NOT EXECUTED
4c1c2: 6742 beqs 4c206 <_Thread_queue_Extract_priority_helper+0xbe><== NOT EXECUTED
_ISR_Enable( level );
4c1c4: 46c1 movew %d1,%sr <== NOT EXECUTED
4c1c6: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
4c1ca: 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
}
4c1d0: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4c1d6: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4c1da: 4e5e unlk %fp <== NOT EXECUTED
4c1dc: 4ef9 0004 8564 jmp 48564 <_Thread_Clear_state> <== NOT EXECUTED
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
_ISR_Enable( level );
4c1e2: 46c1 movew %d1,%sr
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4c1e4: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5
4c1ea: 4e5e unlk %fp
4c1ec: 4e75 rts
Chain_Node *last_node;
the_node = (Chain_Node *) the_thread;
_ISR_Disable( level );
if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_ISR_Enable( level );
4c1ee: 46c1 movew %d1,%sr <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
if ( !_Objects_Is_local_id( the_thread->Object.id ) )
_Thread_MP_Free_proxy( the_thread );
#endif
}
4c1f0: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4c1f6: 4e5e unlk %fp <== NOT EXECUTED
4c1f8: 4e75 rts <== NOT EXECUTED
head->next = new_second_node;
tail->previous = last_node;
last_node->next = tail;
}
} else {
previous_node->next = next_node;
4c1fa: 2689 movel %a1,%a3@
next_node->previous = previous_node;
4c1fc: 234b 0004 movel %a3,%a1@(4)
/*
* If we are not supposed to touch timers or the thread's state, return.
*/
if ( requeuing ) {
4c200: 4a02 tstb %d2
4c202: 67b8 beqs 4c1bc <_Thread_queue_Extract_priority_helper+0x74><== NEVER TAKEN
4c204: 60dc bras 4c1e2 <_Thread_queue_Extract_priority_helper+0x9a>
4c206: 7003 moveq #3,%d0 <== NOT EXECUTED
4c208: 2540 0050 movel %d0,%a2@(80) <== NOT EXECUTED
if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {
_ISR_Enable( level );
} else {
_Watchdog_Deactivate( &the_thread->Timer );
_ISR_Enable( level );
4c20c: 46c1 movew %d1,%sr <== NOT EXECUTED
(void) _Watchdog_Remove( &the_thread->Timer );
4c20e: 486a 0048 pea %a2@(72) <== NOT EXECUTED
4c212: 4eb9 0004 994c jsr 4994c <_Watchdog_Remove> <== NOT EXECUTED
4c218: 588f addql #4,%sp <== NOT EXECUTED
4c21a: 227c 1003 fff8 moveal #268697592,%a1 <== NOT EXECUTED
4c220: 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
}
4c224: 4cee 3c04 ffec moveml %fp@(-20),%d2/%a2-%a5 <== NOT EXECUTED
4c22a: 2d49 000c movel %a1,%fp@(12) <== NOT EXECUTED
4c22e: 4e5e unlk %fp <== NOT EXECUTED
4c230: 4ef9 0004 8564 jmp 48564 <_Thread_Clear_state> <== NOT EXECUTED
...
00049024 <_Thread_queue_Extract_with_proxy>:
*/
bool _Thread_queue_Extract_with_proxy(
Thread_Control *the_thread
)
{
49024: 4e56 0000 linkw %fp,#0
49028: 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);
4902c: 2028 0010 movel %a0@(16),%d0
49030: 0280 0003 bee0 andil #245472,%d0
States_Control state;
state = the_thread->current_state;
if ( _States_Is_waiting_on_thread_queue( state ) ) {
49036: 6606 bnes 4903e <_Thread_queue_Extract_with_proxy+0x1a><== NEVER TAKEN
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
}
49038: 4e5e unlk %fp
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
}
return false;
4903a: 4200 clrb %d0
}
4903c: 4e75 rts
if ( proxy_extract_callout )
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4903e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
49040: 2f28 0044 movel %a0@(68),%sp@- <== NOT EXECUTED
49044: 4eb9 0004 c110 jsr 4c110 <_Thread_queue_Extract> <== NOT EXECUTED
return true;
4904a: 508f addql #8,%sp <== NOT EXECUTED
}
return false;
}
4904c: 4e5e unlk %fp <== NOT EXECUTED
(*proxy_extract_callout)( the_thread );
}
#endif
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
return true;
4904e: 7001 moveq #1,%d0 <== NOT EXECUTED
}
return false;
}
...
0005fc0c <_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;
5fc0c: 43f9 0006 1038 lea 61038 <_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 )
5fc12: 7001 moveq #1,%d0 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First(
Thread_queue_Control *the_thread_queue
)
{
5fc14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
5fc18: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
5fc1c: b0a8 0034 cmpl %a0@(52),%d0 <== NOT EXECUTED
5fc20: 6708 beqs 5fc2a <_Thread_queue_First+0x1e> <== NOT EXECUTED
first_p = _Thread_queue_First_priority;
else /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
first_p = _Thread_queue_First_fifo;
return (*first_p)( the_thread_queue );
5fc22: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5fc26: 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 );
5fc28: 4ed1 jmp %a1@ <== NOT EXECUTED
5fc2a: 2d48 0008 movel %a0,%fp@(8) <== NOT EXECUTED
}
5fc2e: 4e5e unlk %fp <== NOT EXECUTED
)
{
Thread_Control * (*first_p)(Thread_queue_Control *);
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY )
first_p = _Thread_queue_First_priority;
5fc30: 43f9 0005 fc38 lea 5fc38 <_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 );
5fc36: 4ed1 jmp %a1@ <== NOT EXECUTED
00061038 <_Thread_queue_First_fifo>:
*/
Thread_Control *_Thread_queue_First_fifo(
Thread_queue_Control *the_thread_queue
)
{
61038: 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;
}
6103c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
61040: 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 ) )
61042: b1c0 cmpal %d0,%a0 <== NOT EXECUTED
61044: 6704 beqs 6104a <_Thread_queue_First_fifo+0x12> <== NOT EXECUTED
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
}
61046: 4e5e unlk %fp <== NOT EXECUTED
61048: 4e75 rts <== NOT EXECUTED
)
{
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Fifo ) )
return (Thread_Control *) _Chain_First( &the_thread_queue->Queues.Fifo );
return NULL;
6104a: 4280 clrl %d0 <== NOT EXECUTED
}
6104c: 4e5e unlk %fp <== NOT EXECUTED
0005fc38 <_Thread_queue_First_priority>:
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
5fc38: 4281 clrl %d1 <== NOT EXECUTED
*/
Thread_Control *_Thread_queue_First_priority (
Thread_queue_Control *the_thread_queue
)
{
5fc3a: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
5fc3e: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
5fc42: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
5fc46: 204a moveal %a2,%a0 <== NOT EXECUTED
5fc48: 2601 movel %d1,%d3 <== NOT EXECUTED
5fc4a: 2401 movel %d1,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
5fc4c: 5281 addql #1,%d1 <== NOT EXECUTED
5fc4e: e58b lsll #2,%d3 <== NOT EXECUTED
5fc50: e98a lsll #4,%d2 <== NOT EXECUTED
return (Thread_Control *) _Chain_First(
&the_thread_queue->Queues.Priority[ index ]
);
}
return NULL;
}
5fc52: 2010 movel %a0@,%d0 <== NOT EXECUTED
5fc54: 9483 subl %d3,%d2 <== NOT EXECUTED
{
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++ ) {
5fc56: 41e8 000c lea %a0@(12),%a0 <== NOT EXECUTED
5fc5a: 43f2 2804 lea %a2@(00000004,%d2:l),%a1 <== NOT EXECUTED
if ( !_Chain_Is_empty( &the_thread_queue->Queues.Priority[ index ] ) )
5fc5e: b3c0 cmpal %d0,%a1 <== NOT EXECUTED
5fc60: 6608 bnes 5fc6a <_Thread_queue_First_priority+0x32><== NOT EXECUTED
Thread_queue_Control *the_thread_queue
)
{
uint32_t index;
for( index=0 ;
5fc62: 7004 moveq #4,%d0 <== NOT EXECUTED
5fc64: b081 cmpl %d1,%d0 <== NOT EXECUTED
5fc66: 66e0 bnes 5fc48 <_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;
5fc68: 4200 clrb %d0 <== NOT EXECUTED
}
5fc6a: 4cd7 040c moveml %sp@,%d2-%d3/%a2 <== NOT EXECUTED
5fc6e: 4e5e unlk %fp <== NOT EXECUTED
...
00049090 <_Thread_queue_Initialize>:
the_thread_queue->state = state;
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
49090: 7201 moveq #1,%d1
Thread_queue_Control *the_thread_queue,
Thread_queue_Disciplines the_discipline,
States_Control state,
uint32_t timeout_status
)
{
49092: 4e56 0000 linkw %fp,#0
49096: 206e 0008 moveal %fp@(8),%a0
4909a: 2f0a movel %a2,%sp@-
4909c: 202e 000c movel %fp@(12),%d0
490a0: 2f02 movel %d2,%sp@-
the_thread_queue->state = state;
490a2: 216e 0010 0038 movel %fp@(16),%a0@(56)
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
490a8: 216e 0014 003c movel %fp@(20),%a0@(60)
States_Control state,
uint32_t timeout_status
)
{
the_thread_queue->state = state;
the_thread_queue->discipline = the_discipline;
490ae: 2140 0034 movel %d0,%a0@(52)
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
490b2: 42a8 0030 clrl %a0@(48)
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
490b6: b280 cmpl %d0,%d1
490b8: 6716 beqs 490d0 <_Thread_queue_Initialize+0x40>
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
490ba: 2448 moveal %a0,%a2
490bc: 588a addql #4,%a2
head->next = tail;
head->previous = NULL;
490be: 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 );
490c2: 208a movel %a2,%a0@
head->next = tail;
head->previous = NULL;
tail->previous = head;
490c4: 2148 0008 movel %a0,%a0@(8)
_Chain_Initialize_empty( &the_thread_queue->Queues.Priority[index] );
} else { /* must be THREAD_QUEUE_DISCIPLINE_FIFO */
_Chain_Initialize_empty( &the_thread_queue->Queues.Fifo );
}
}
490c8: 241f movel %sp@+,%d2
490ca: 245f moveal %sp@+,%a2
490cc: 4e5e unlk %fp
490ce: 4e75 rts
the_thread_queue->state = state;
the_thread_queue->discipline = the_discipline;
the_thread_queue->timeout_status = timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
490d0: 2248 moveal %a0,%a1
490d2: 4280 clrl %d0
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
490d4: 2400 movel %d0,%d2
490d6: 2200 movel %d0,%d1
uint32_t index;
for( index=0 ;
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
490d8: 5280 addql #1,%d0
490da: e58a lsll #2,%d2
490dc: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
490de: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
490e2: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
490e4: 45f0 1800 lea %a0@(00000000,%d1:l),%a2
490e8: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
490ec: 45f0 1804 lea %a0@(00000004,%d1:l),%a2
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
490f0: 7204 moveq #4,%d1
490f2: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
490f4: 43e9 000c lea %a1@(12),%a1
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
490f8: b280 cmpl %d0,%d1
490fa: 67cc beqs 490c8 <_Thread_queue_Initialize+0x38> <== NEVER TAKEN
490fc: 2400 movel %d0,%d2
490fe: 2200 movel %d0,%d1
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
49100: 5280 addql #1,%d0
49102: e58a lsll #2,%d2
49104: e989 lsll #4,%d1
head->next = tail;
head->previous = NULL;
49106: 42a9 0004 clrl %a1@(4)
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
4910a: 9282 subl %d2,%d1
*/
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
4910c: 45f0 1800 lea %a0@(00000000,%d1:l),%a2
49110: 234a 0008 movel %a2,%a1@(8)
Chain_Node *tail = _Chain_Tail( the_chain );
49114: 45f0 1804 lea %a0@(00000004,%d1:l),%a2
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
49118: 7204 moveq #4,%d1
4911a: 228a movel %a2,%a1@
index < TASK_QUEUE_DATA_NUMBER_OF_PRIORITY_HEADERS ;
index++)
4911c: 43e9 000c lea %a1@(12),%a1
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
if ( the_discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
uint32_t index;
for( index=0 ;
49120: b280 cmpl %d0,%d1
49122: 66b0 bnes 490d4 <_Thread_queue_Initialize+0x44>
49124: 60a2 bras 490c8 <_Thread_queue_Initialize+0x38>
...
0004c238 <_Thread_queue_Process_timeout>:
#include <rtems/score/tqdata.h>
void _Thread_queue_Process_timeout(
Thread_Control *the_thread
)
{
4c238: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4c23c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
Thread_queue_Control *the_thread_queue = the_thread->Wait.queue;
4c240: 2268 0044 moveal %a0@(68),%a1 <== NOT EXECUTED
* If it is not satisfied, then it is "nothing happened" and
* this is the "timeout" transition. After a request is satisfied,
* a timeout is not allowed to occur.
*/
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
4c244: 2029 0030 movel %a1@(48),%d0 <== NOT EXECUTED
4c248: 6708 beqs 4c252 <_Thread_queue_Process_timeout+0x1a><== NOT EXECUTED
4c24a: b1f9 0005 e6f8 cmpal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
4c250: 6716 beqs 4c268 <_Thread_queue_Process_timeout+0x30><== NOT EXECUTED
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
4c252: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
4c258: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4c25a: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4c25c: 4eb9 0004 c110 jsr 4c110 <_Thread_queue_Extract> <== NOT EXECUTED
4c262: 508f addql #8,%sp <== NOT EXECUTED
}
}
4c264: 4e5e unlk %fp <== NOT EXECUTED
4c266: 4e75 rts <== NOT EXECUTED
* a timeout is not allowed to occur.
*/
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
_Thread_Is_executing( the_thread ) ) {
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
4c268: 7203 moveq #3,%d1 <== NOT EXECUTED
4c26a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4c26c: 67f6 beqs 4c264 <_Thread_queue_Process_timeout+0x2c><== NOT EXECUTED
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4c26e: 7002 moveq #2,%d0 <== NOT EXECUTED
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
}
}
4c270: 4e5e unlk %fp <== NOT EXECUTED
*/
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SYNCHRONIZED &&
_Thread_Is_executing( the_thread ) ) {
if ( the_thread_queue->sync_state != THREAD_BLOCKING_OPERATION_SATISFIED ) {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
4c272: 2169 003c 0034 movel %a1@(60),%a0@(52) <== NOT EXECUTED
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;
4c278: 2340 0030 movel %d0,%a1@(48) <== NOT EXECUTED
}
} else {
the_thread->Wait.return_code = the_thread->Wait.queue->timeout_status;
_Thread_queue_Extract( the_thread->Wait.queue, the_thread );
}
}
...
00049128 <_Thread_queue_Requeue>:
void _Thread_queue_Requeue(
Thread_queue_Control *the_thread_queue,
Thread_Control *the_thread
)
{
49128: 4e56 fff0 linkw %fp,#-16
4912c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
49130: 246e 0008 moveal %fp@(8),%a2
49134: 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 )
49138: 4a8a tstl %a2
4913a: 6708 beqs 49144 <_Thread_queue_Requeue+0x1c> <== NEVER TAKEN
/*
* If queueing by FIFO, there is nothing to do. This only applies to
* priority blocking discipline.
*/
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
4913c: 7001 moveq #1,%d0
4913e: b0aa 0034 cmpl %a2@(52),%d0
49142: 670a beqs 4914e <_Thread_queue_Requeue+0x26> <== ALWAYS TAKEN
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
}
_ISR_Enable( level );
}
}
49144: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4914a: 4e5e unlk %fp <== NOT EXECUTED
4914c: 4e75 rts <== NOT EXECUTED
if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
Thread_queue_Control *tq = the_thread_queue;
ISR_Level level;
ISR_Level level_ignored;
_ISR_Disable( level );
4914e: 303c 0700 movew #1792,%d0
49152: 40c2 movew %sr,%d2
49154: 8082 orl %d2,%d0
49156: 46c0 movew %d0,%sr
49158: 202b 0010 movel %a3@(16),%d0
4915c: 0280 0003 bee0 andil #245472,%d0
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
49162: 660c bnes 49170 <_Thread_queue_Requeue+0x48> <== ALWAYS TAKEN
_Thread_queue_Enter_critical_section( tq );
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
}
_ISR_Enable( level );
49164: 46c2 movew %d2,%sr <== NOT EXECUTED
}
}
49166: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4916c: 4e5e unlk %fp
4916e: 4e75 rts
ISR_Level level_ignored;
_ISR_Disable( level );
if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
_Thread_queue_Enter_critical_section( tq );
_Thread_queue_Extract_priority_helper( tq, the_thread, true );
49170: 4878 0001 pea 1 <ADD>
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
49174: 7001 moveq #1,%d0
49176: 2f0b movel %a3,%sp@-
49178: 2540 0030 movel %d0,%a2@(48)
4917c: 2f0a movel %a2,%sp@-
4917e: 4eb9 0004 c148 jsr 4c148 <_Thread_queue_Extract_priority_helper>
(void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
49184: 486e fffc pea %fp@(-4)
49188: 2f0b movel %a3,%sp@-
4918a: 2f0a movel %a2,%sp@-
4918c: 4eb9 0004 8e80 jsr 48e80 <_Thread_queue_Enqueue_priority>
49192: 4fef 0018 lea %sp@(24),%sp
}
_ISR_Enable( level );
49196: 46c2 movew %d2,%sr
49198: 60cc bras 49166 <_Thread_queue_Requeue+0x3e>
...
0004919c <_Thread_queue_Timeout>:
void _Thread_queue_Timeout(
Objects_Id id,
void *ignored __attribute__((unused))
)
{
4919c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
491a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
491a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
491a8: 4eb9 0004 8940 jsr 48940 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
491ae: 508f addql #8,%sp <== NOT EXECUTED
491b0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
491b4: 6618 bnes 491ce <_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 );
491b6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
491b8: 4eb9 0004 c238 jsr 4c238 <_Thread_queue_Process_timeout> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )
{
RTEMS_COMPILER_MEMORY_BARRIER();
_Thread_Dispatch_disable_level -= 1;
491be: 588f addql #4,%sp <== NOT EXECUTED
491c0: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
491c6: 5380 subql #1,%d0 <== NOT EXECUTED
491c8: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
_Thread_Unnest_dispatch();
break;
}
}
491ce: 4e5e unlk %fp <== NOT EXECUTED
...
00059090 <_Timer_server_Body>:
* @a arg points to the corresponding timer server control block.
*/
static rtems_task _Timer_server_Body(
rtems_task_argument arg
)
{
59090: 4e56 ffb0 linkw %fp,#-80 <== NOT EXECUTED
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
tail->previous = head;
59094: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59098: 200e movel %fp,%d0 <== NOT EXECUTED
5909a: 5180 subql #8,%d0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
5909c: 2d48 fffc movel %a0,%fp@(-4) <== NOT EXECUTED
590a0: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED
590a4: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
590a8: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
590ac: 260e movel %fp,%d3 <== NOT EXECUTED
590ae: 0683 ffff ffe8 addil #-24,%d3 <== NOT EXECUTED
590b4: 240a movel %a2,%d2 <== NOT EXECUTED
590b6: 2a0a movel %a2,%d5 <== NOT EXECUTED
590b8: 4bf9 0005 d4e4 lea 5d4e4 <_Watchdog_Adjust_to_chain>,%a5 <== NOT EXECUTED
590be: 0682 0000 0030 addil #48,%d2 <== NOT EXECUTED
590c4: 0685 0000 0068 addil #104,%d5 <== NOT EXECUTED
590ca: 47f9 0005 9c54 lea 59c54 <_Chain_Get>,%a3 <== NOT EXECUTED
590d0: 49f9 0005 d56c lea 5d56c <_Watchdog_Insert>,%a4 <== NOT EXECUTED
590d6: 2e00 movel %d0,%d7 <== NOT EXECUTED
* of zero it will be processed in the next iteration of the timer server
* body loop.
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
590d8: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED
590de: 2d48 ffd8 movel %a0,%fp@(-40) <== NOT EXECUTED
590e2: 41ea 0008 lea %a2@(8),%a0 <== NOT EXECUTED
590e6: 2d48 ffe4 movel %a0,%fp@(-28) <== NOT EXECUTED
590ea: 41ea 0040 lea %a2@(64),%a0 <== NOT EXECUTED
590ee: 2d48 ffe0 movel %a0,%fp@(-32) <== NOT EXECUTED
590f2: 41ee ffec lea %fp@(-20),%a0 <== NOT EXECUTED
590f6: 2d40 fff4 movel %d0,%fp@(-12) <== NOT EXECUTED
head->previous = NULL;
590fa: 42ae fff8 clrl %fp@(-8) <== NOT EXECUTED
590fe: 42ae ffec clrl %fp@(-20) <== NOT EXECUTED
tail->previous = head;
59102: 2d43 fff0 movel %d3,%fp@(-16) <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59106: 2d48 ffe8 movel %a0,%fp@(-24) <== NOT EXECUTED
Chain_Control *tmp;
/*
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
5910a: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED
5910e: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED
static void _Timer_server_Process_interval_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;
59112: 2039 0007 d35c movel 7d35c <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
/*
* We assume adequate unsigned arithmetic here.
*/
Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;
59118: 222a 003c movel %a2@(60),%d1 <== NOT EXECUTED
watchdogs->last_snapshot = snapshot;
5911c: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
59120: 9081 subl %d1,%d0 <== NOT EXECUTED
59122: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59124: 2f00 movel %d0,%sp@- <== NOT EXECUTED
59126: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59128: 4e95 jsr %a5@ <== NOT EXECUTED
static void _Timer_server_Process_tod_watchdogs(
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5912a: 2039 0007 d2de movel 7d2de <_TOD_Now>,%d0 <== NOT EXECUTED
/*
* Process the seconds chain. Start by checking that the Time
* of Day (TOD) has not been set backwards. If it has then
* we want to adjust the watchdogs->Chain to indicate this.
*/
if ( snapshot > last_snapshot ) {
59130: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
Timer_server_Watchdogs *watchdogs,
Chain_Control *fire_chain
)
{
Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
Watchdog_Interval last_snapshot = watchdogs->last_snapshot;
59134: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED
/*
* Process the seconds chain. Start by checking that the Time
* of Day (TOD) has not been set backwards. If it has then
* we want to adjust the watchdogs->Chain to indicate this.
*/
if ( snapshot > last_snapshot ) {
59138: b280 cmpl %d0,%d1 <== NOT EXECUTED
5913a: 6500 0148 bcsw 59284 <_Timer_server_Body+0x1f4> <== NOT EXECUTED
* TOD has been set forward.
*/
delta = snapshot - last_snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
} else if ( snapshot < last_snapshot ) {
5913e: 6200 00be bhiw 591fe <_Timer_server_Body+0x16e> <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
59142: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
59146: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
5914a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5914c: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
5914e: 588f addql #4,%sp <== NOT EXECUTED
59150: 4a80 tstl %d0 <== NOT EXECUTED
59152: 672e beqs 59182 <_Timer_server_Body+0xf2> <== NOT EXECUTED
static void _Timer_server_Insert_timer(
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
59154: 2040 moveal %d0,%a0 <== NOT EXECUTED
59156: 7c01 moveq #1,%d6 <== NOT EXECUTED
59158: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
5915c: bc81 cmpl %d1,%d6 <== NOT EXECUTED
5915e: 6700 00c2 beqw 59222 <_Timer_server_Body+0x192> <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
59162: 7c03 moveq #3,%d6 <== NOT EXECUTED
59164: bc81 cmpl %d1,%d6 <== NOT EXECUTED
59166: 66de bnes 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59168: 2040 moveal %d0,%a0 <== NOT EXECUTED
5916a: 4868 0010 pea %a0@(16) <== NOT EXECUTED
5916e: 2f05 movel %d5,%sp@- <== NOT EXECUTED
59170: 4e94 jsr %a4@ <== NOT EXECUTED
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
59172: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59176: 508f addql #8,%sp <== NOT EXECUTED
}
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{
while ( true ) {
Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
59178: 2f00 movel %d0,%sp@- <== NOT EXECUTED
5917a: 4e93 jsr %a3@ <== NOT EXECUTED
if ( timer == NULL ) {
5917c: 588f addql #4,%sp <== NOT EXECUTED
5917e: 4a80 tstl %d0 <== NOT EXECUTED
59180: 66d2 bnes 59154 <_Timer_server_Body+0xc4> <== NOT EXECUTED
* of zero it will be processed in the next iteration of the timer server
* body loop.
*/
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
59182: 2004 movel %d4,%d0 <== NOT EXECUTED
59184: 40c1 movew %sr,%d1 <== NOT EXECUTED
59186: 8081 orl %d1,%d0 <== NOT EXECUTED
59188: 46c0 movew %d0,%sr <== NOT EXECUTED
tmp = ts->insert_chain;
5918a: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
if ( _Chain_Is_empty( insert_chain ) ) {
5918e: beae fff4 cmpl %fp@(-12),%d7 <== NOT EXECUTED
59192: 6700 0114 beqw 592a8 <_Timer_server_Body+0x218> <== NOT EXECUTED
59196: 7001 moveq #1,%d0 <== NOT EXECUTED
ts->insert_chain = NULL;
do_loop = false;
}
_ISR_Enable( level );
59198: 46c1 movew %d1,%sr <== NOT EXECUTED
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
while ( do_loop ) {
5919a: 4a00 tstb %d0 <== NOT EXECUTED
5919c: 6600 ff74 bnew 59112 <_Timer_server_Body+0x82> <== NOT EXECUTED
_Chain_Initialize_empty( &fire_chain );
while ( true ) {
_Timer_server_Get_watchdogs_that_fire_now( ts, &insert_chain, &fire_chain );
if ( !_Chain_Is_empty( &fire_chain ) ) {
591a0: 202e ffd8 movel %fp@(-40),%d0 <== NOT EXECUTED
591a4: b0ae ffe8 cmpl %fp@(-24),%d0 <== NOT EXECUTED
591a8: 6700 0086 beqw 59230 <_Timer_server_Body+0x1a0> <== NOT EXECUTED
/*
* It is essential that interrupts are disable here since an interrupt
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
591ac: 2204 movel %d4,%d1 <== NOT EXECUTED
591ae: 40c0 movew %sr,%d0 <== NOT EXECUTED
591b0: 8280 orl %d0,%d1 <== NOT EXECUTED
591b2: 46c1 movew %d1,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
591b4: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
591b8: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED
591bc: 6732 beqs 591f0 <_Timer_server_Body+0x160> <== NOT EXECUTED
Chain_Control *the_chain
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
591be: 2250 moveal %a0@,%a1 <== NOT EXECUTED
head->next = new_first;
new_first->previous = head;
591c0: 2343 0004 movel %d3,%a1@(4) <== NOT EXECUTED
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
591c4: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *old_first = head->next;
Chain_Node *new_first = old_first->next;
head->next = new_first;
591c8: 2d49 ffe8 movel %a1,%fp@(-24) <== NOT EXECUTED
_ISR_Enable( level );
591cc: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* The timer server may block here and wait for resources or time.
* The system watchdogs are inactive and will remain inactive since
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
591ce: 2f28 0024 movel %a0@(36),%sp@- <== NOT EXECUTED
591d2: 2f28 0020 movel %a0@(32),%sp@- <== NOT EXECUTED
591d6: 2068 001c moveal %a0@(28),%a0 <== NOT EXECUTED
591da: 4e90 jsr %a0@ <== NOT EXECUTED
}
591dc: 508f addql #8,%sp <== NOT EXECUTED
/*
* It is essential that interrupts are disable here since an interrupt
* service routine may remove a watchdog from the chain.
*/
_ISR_Disable( level );
591de: 2204 movel %d4,%d1 <== NOT EXECUTED
591e0: 40c0 movew %sr,%d0 <== NOT EXECUTED
591e2: 8280 orl %d0,%d1 <== NOT EXECUTED
591e4: 46c1 movew %d1,%sr <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
591e6: 206e ffe8 moveal %fp@(-24),%a0 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(
Chain_Control *the_chain
)
{
if ( !_Chain_Is_empty(the_chain))
591ea: b1ee ffd8 cmpal %fp@(-40),%a0 <== NOT EXECUTED
591ee: 66ce bnes 591be <_Timer_server_Body+0x12e> <== NOT EXECUTED
watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
if ( watchdog != NULL ) {
watchdog->state = WATCHDOG_INACTIVE;
_ISR_Enable( level );
} else {
_ISR_Enable( level );
591f0: 46c0 movew %d0,%sr <== NOT EXECUTED
Chain_Control *tmp;
/*
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
591f2: 41ee fff4 lea %fp@(-12),%a0 <== NOT EXECUTED
591f6: 2548 0078 movel %a0,%a2@(120) <== NOT EXECUTED
591fa: 6000 ff16 braw 59112 <_Timer_server_Body+0x82> <== NOT EXECUTED
/*
* The current TOD is before the last TOD which indicates that
* TOD has been set backwards.
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
591fe: 9280 subl %d0,%d1 <== NOT EXECUTED
59200: 2f01 movel %d1,%sp@- <== NOT EXECUTED
59202: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
59206: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
5920a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5920c: 4eb9 0005 d450 jsr 5d450 <_Watchdog_Adjust> <== NOT EXECUTED
59212: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
59216: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
watchdogs->last_snapshot = snapshot;
5921a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
5921e: 6000 ff26 braw 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
Timer_server_Control *ts,
Timer_Control *timer
)
{
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
59222: 4868 0010 pea %a0@(16) <== NOT EXECUTED
59226: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59228: 4e94 jsr %a4@ <== NOT EXECUTED
5922a: 508f addql #8,%sp <== NOT EXECUTED
5922c: 6000 ff18 braw 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
* the active flag of the timer server is true.
*/
(*watchdog->routine)( watchdog->id, watchdog->user_data );
}
} else {
ts->active = false;
59230: 4206 clrb %d6 <== NOT EXECUTED
59232: 1546 007c moveb %d6,%a2@(124) <== NOT EXECUTED
59236: 2039 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5923c: 5280 addql #1,%d0 <== NOT EXECUTED
5923e: 23c0 0007 d234 movel %d0,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Block until there is something to do.
*/
_Thread_Disable_dispatch();
_Thread_Set_state( ts->thread, STATES_DELAYING );
59244: 4878 0008 pea 8 <DIVIDE_BY_ZERO> <== NOT EXECUTED
59248: 2f12 movel %a2@,%sp@- <== NOT EXECUTED
5924a: 4eb9 0005 cd9c jsr 5cd9c <_Thread_Set_state> <== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
59250: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59252: 4eba fd64 jsr %pc@(58fb8 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59256: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59258: 4eba fdc8 jsr %pc@(59022 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
_Thread_Enable_dispatch();
5925c: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
ts->active = true;
59262: 7001 moveq #1,%d0 <== NOT EXECUTED
59264: 1540 007c moveb %d0,%a2@(124) <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
59268: 2f2e ffe4 movel %fp@(-28),%sp@- <== NOT EXECUTED
5926c: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
59272: 2f2e ffe0 movel %fp@(-32),%sp@- <== NOT EXECUTED
59276: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
5927c: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
59280: 6000 fe88 braw 5910a <_Timer_server_Body+0x7a> <== NOT EXECUTED
/*
* This path is for normal forward movement and cases where the
* TOD has been set forward.
*/
delta = snapshot - last_snapshot;
_Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );
59284: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59286: 2c00 movel %d0,%d6 <== NOT EXECUTED
59288: 9c81 subl %d1,%d6 <== NOT EXECUTED
5928a: 2f06 movel %d6,%sp@- <== NOT EXECUTED
5928c: 2d40 ffdc movel %d0,%fp@(-36) <== NOT EXECUTED
59290: 2f05 movel %d5,%sp@- <== NOT EXECUTED
59292: 4eb9 0005 d4e4 jsr 5d4e4 <_Watchdog_Adjust_to_chain> <== NOT EXECUTED
59298: 202e ffdc movel %fp@(-36),%d0 <== NOT EXECUTED
5929c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
*/
delta = last_snapshot - snapshot;
_Watchdog_Adjust( &watchdogs->Chain, WATCHDOG_BACKWARD, delta );
}
watchdogs->last_snapshot = snapshot;
592a0: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
592a4: 6000 fea0 braw 59146 <_Timer_server_Body+0xb6> <== NOT EXECUTED
_Timer_server_Process_insertions( ts );
_ISR_Disable( level );
tmp = ts->insert_chain;
if ( _Chain_Is_empty( insert_chain ) ) {
ts->insert_chain = NULL;
592a8: 42aa 0078 clrl %a2@(120) <== NOT EXECUTED
do_loop = false;
592ac: 4200 clrb %d0 <== NOT EXECUTED
}
_ISR_Enable( level );
592ae: 46c1 movew %d1,%sr <== NOT EXECUTED
* Afterwards all timer inserts are directed to this chain and the interval
* and TOD chains will be no more modified by other parties.
*/
ts->insert_chain = insert_chain;
while ( do_loop ) {
592b0: 4a00 tstb %d0 <== NOT EXECUTED
592b2: 6600 fe5e bnew 59112 <_Timer_server_Body+0x82> <== NOT EXECUTED
592b6: 6000 fee8 braw 591a0 <_Timer_server_Body+0x110> <== NOT EXECUTED
00058fb8 <_Timer_server_Reset_interval_system_watchdog>:
}
static void _Timer_server_Reset_interval_system_watchdog(
Timer_server_Control *ts
)
{
58fb8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
58fbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58fbe: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
58fc2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
static void _Timer_server_Stop_interval_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );
58fc4: 240a movel %a2,%d2 <== NOT EXECUTED
58fc6: 5082 addql #8,%d2 <== NOT EXECUTED
58fc8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58fca: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
58fd0: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
58fd6: 40c1 movew %sr,%d1 <== NOT EXECUTED
58fd8: 8081 orl %d1,%d0 <== NOT EXECUTED
58fda: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
58fdc: 200a movel %a2,%d0 <== NOT EXECUTED
58fde: 0680 0000 0034 addil #52,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
58fe4: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
58fe6: 206a 0030 moveal %a2@(48),%a0 <== NOT EXECUTED
ISR_Level level;
_Timer_server_Stop_interval_system_watchdog( ts );
_ISR_Disable( level );
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
58fea: b088 cmpl %a0,%d0 <== NOT EXECUTED
58fec: 6726 beqs 59014 <_Timer_server_Reset_interval_system_watchdog+0x5c><== NOT EXECUTED
Watchdog_Interval delta_interval =
58fee: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->Interval_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
58ff2: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
58ff4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58ff6: 4879 0007 d314 pea 7d314 <_Watchdog_Ticks_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
58ffc: 2540 0014 movel %d0,%a2@(20) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
59000: 4eb9 0005 d56c jsr 5d56c <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
59006: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5900a: 508f addql #8,%sp <== NOT EXECUTED
5900c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
59010: 4e5e unlk %fp <== NOT EXECUTED
59012: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_ticks(
&ts->Interval_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
59014: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
59016: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5901a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5901e: 4e5e unlk %fp <== NOT EXECUTED
00059022 <_Timer_server_Reset_tod_system_watchdog>:
}
static void _Timer_server_Reset_tod_system_watchdog(
Timer_server_Control *ts
)
{
59022: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
59026: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59028: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
5902c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
static void _Timer_server_Stop_tod_system_watchdog(
Timer_server_Control *ts
)
{
_Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );
5902e: 240a movel %a2,%d2 <== NOT EXECUTED
59030: 0682 0000 0040 addil #64,%d2 <== NOT EXECUTED
59036: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59038: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
{
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
5903e: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
59044: 40c1 movew %sr,%d1 <== NOT EXECUTED
59046: 8081 orl %d1,%d0 <== NOT EXECUTED
59048: 46c0 movew %d0,%sr <== NOT EXECUTED
5904a: 200a movel %a2,%d0 <== NOT EXECUTED
5904c: 0680 0000 006c addil #108,%d0 <== NOT EXECUTED
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
59052: 588f addql #4,%sp <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59054: 206a 0068 moveal %a2@(104),%a0 <== NOT EXECUTED
ISR_Level level;
_Timer_server_Stop_tod_system_watchdog( ts );
_ISR_Disable( level );
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
59058: b088 cmpl %a0,%d0 <== NOT EXECUTED
5905a: 6726 beqs 59082 <_Timer_server_Reset_tod_system_watchdog+0x60><== NOT EXECUTED
Watchdog_Interval delta_interval =
5905c: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
_Watchdog_First( &ts->TOD_watchdogs.Chain )->delta_interval;
_ISR_Enable( level );
59060: 46c1 movew %d1,%sr <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
59062: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59064: 4879 0007 d308 pea 7d308 <_Watchdog_Seconds_chain> <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
5906a: 2540 004c movel %d0,%a2@(76) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
5906e: 4eb9 0005 d56c jsr 5d56c <_Watchdog_Insert> <== NOT EXECUTED
delta_interval
);
} else {
_ISR_Enable( level );
}
}
59074: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
59078: 508f addql #8,%sp <== NOT EXECUTED
5907a: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5907e: 4e5e unlk %fp <== NOT EXECUTED
59080: 4e75 rts <== NOT EXECUTED
_Watchdog_Insert_seconds(
&ts->TOD_watchdogs.System_watchdog,
delta_interval
);
} else {
_ISR_Enable( level );
59082: 46c1 movew %d1,%sr <== NOT EXECUTED
}
}
59084: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
59088: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5908c: 4e5e unlk %fp <== NOT EXECUTED
000592ba <_Timer_server_Schedule_operation_method>:
static void _Timer_server_Schedule_operation_method(
Timer_server_Control *ts,
Timer_Control *timer
)
{
592ba: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
592be: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
592c2: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
592c6: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( ts->insert_chain == NULL ) {
592ca: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
592ce: 671a beqs 592ea <_Timer_server_Schedule_operation_method+0x30><== NOT EXECUTED
* server is not preemptible, so we must be in interrupt context here. No
* thread dispatch will happen until the timer server finishes its
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
592d0: 202a 0078 movel %a2@(120),%d0 <== NOT EXECUTED
592d4: 2d48 000c movel %a0,%fp@(12) <== NOT EXECUTED
}
}
592d8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
* server is not preemptible, so we must be in interrupt context here. No
* thread dispatch will happen until the timer server finishes its
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
592de: 2d40 0008 movel %d0,%fp@(8) <== NOT EXECUTED
}
}
592e2: 4e5e unlk %fp <== NOT EXECUTED
* server is not preemptible, so we must be in interrupt context here. No
* thread dispatch will happen until the timer server finishes its
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
592e4: 4ef9 0005 9bf4 jmp 59bf4 <_Chain_Append> <== NOT EXECUTED
592ea: 2039 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
592f0: 5280 addql #1,%d0 <== NOT EXECUTED
592f2: 23c0 0007 d234 movel %d0,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* being inserted. This could result in an integer overflow.
*/
_Thread_Disable_dispatch();
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
592f8: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
592fc: 7201 moveq #1,%d1 <== NOT EXECUTED
592fe: b280 cmpl %d0,%d1 <== NOT EXECUTED
59300: 6700 008a beqw 5938c <_Timer_server_Schedule_operation_method+0xd2><== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
if ( !ts->active ) {
_Timer_server_Reset_interval_system_watchdog( ts );
}
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
59304: 7803 moveq #3,%d4 <== NOT EXECUTED
59306: b880 cmpl %d0,%d4 <== NOT EXECUTED
59308: 670e beqs 59318 <_Timer_server_Schedule_operation_method+0x5e><== NOT EXECUTED
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
}
}
5930a: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
59310: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
59312: 4ef9 0005 c3da jmp 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
} else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {
/*
* We have to advance the last known seconds value of the server and update
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
59318: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
5931e: 40c2 movew %sr,%d2 <== NOT EXECUTED
59320: 8082 orl %d2,%d0 <== NOT EXECUTED
59322: 46c0 movew %d0,%sr <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(
const Chain_Control *the_chain
)
{
return _Chain_Immutable_first( the_chain )
== _Chain_Immutable_tail( the_chain );
59324: 260a movel %a2,%d3 <== NOT EXECUTED
59326: 0683 0000 006c addil #108,%d3 <== NOT EXECUTED
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5932c: 2039 0007 d2de movel 7d2de <_TOD_Now>,%d0 <== NOT EXECUTED
last_snapshot = ts->TOD_watchdogs.last_snapshot;
59332: 222a 0074 movel %a2@(116),%d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59336: 226a 0068 moveal %a2@(104),%a1 <== NOT EXECUTED
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
last_snapshot = ts->TOD_watchdogs.last_snapshot;
if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {
5933a: b689 cmpl %a1,%d3 <== NOT EXECUTED
5933c: 671c beqs 5935a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );
delta_interval = first_watchdog->delta_interval;
5933e: 2629 0010 movel %a1@(16),%d3 <== NOT EXECUTED
if ( snapshot > last_snapshot ) {
59342: b280 cmpl %d0,%d1 <== NOT EXECUTED
59344: 6400 00ba bccw 59400 <_Timer_server_Schedule_operation_method+0x146><== NOT EXECUTED
/*
* We advanced in time.
*/
delta = snapshot - last_snapshot;
59348: 2800 movel %d0,%d4 <== NOT EXECUTED
5934a: 9881 subl %d1,%d4 <== NOT EXECUTED
if (delta_interval > delta) {
5934c: b883 cmpl %d3,%d4 <== NOT EXECUTED
5934e: 6400 00bc bccw 5940c <_Timer_server_Schedule_operation_method+0x152><== NOT EXECUTED
delta_interval -= delta;
59352: 9684 subl %d4,%d3 <== NOT EXECUTED
59354: 2203 movel %d3,%d1 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
59356: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
}
ts->TOD_watchdogs.last_snapshot = snapshot;
5935a: 2540 0074 movel %d0,%a2@(116) <== NOT EXECUTED
_ISR_Enable( level );
5935e: 46c2 movew %d2,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );
59360: 4868 0010 pea %a0@(16) <== NOT EXECUTED
59364: 486a 0068 pea %a2@(104) <== NOT EXECUTED
59368: 4eb9 0005 d56c jsr 5d56c <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
5936e: 508f addql #8,%sp <== NOT EXECUTED
59370: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED
59374: 6694 bnes 5930a <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_tod_system_watchdog( ts );
59376: 2f0a movel %a2,%sp@- <== NOT EXECUTED
59378: 4eba fca8 jsr %pc@(59022 <_Timer_server_Reset_tod_system_watchdog>)<== NOT EXECUTED
5937c: 588f addql #4,%sp <== NOT EXECUTED
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
}
}
5937e: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
59384: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
59386: 4ef9 0005 c3da jmp 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {
/*
* We have to advance the last known ticks value of the server and update
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
5938c: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
59392: 40c3 movew %sr,%d3 <== NOT EXECUTED
59394: 8083 orl %d3,%d0 <== NOT EXECUTED
59396: 46c0 movew %d0,%sr <== NOT EXECUTED
snapshot = _Watchdog_Ticks_since_boot;
59398: 2039 0007 d35c movel 7d35c <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
5939e: 220a movel %a2,%d1 <== NOT EXECUTED
593a0: 0681 0000 0034 addil #52,%d1 <== NOT EXECUTED
last_snapshot = ts->Interval_watchdogs.last_snapshot;
593a6: 282a 003c movel %a2@(60),%d4 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
593aa: 226a 0030 moveal %a2@(48),%a1 <== NOT EXECUTED
* the watchdog chain accordingly.
*/
_ISR_Disable( level );
snapshot = _Watchdog_Ticks_since_boot;
last_snapshot = ts->Interval_watchdogs.last_snapshot;
if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {
593ae: b289 cmpl %a1,%d1 <== NOT EXECUTED
593b0: 6712 beqs 593c4 <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED
first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
/*
* We assume adequate unsigned arithmetic here.
*/
delta = snapshot - last_snapshot;
593b2: 2200 movel %d0,%d1 <== NOT EXECUTED
593b4: 9284 subl %d4,%d1 <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
593b6: 2429 0010 movel %a1@(16),%d2 <== NOT EXECUTED
if (delta_interval > delta) {
593ba: b481 cmpl %d1,%d2 <== NOT EXECUTED
593bc: 633a blss 593f8 <_Timer_server_Schedule_operation_method+0x13e><== NOT EXECUTED
delta_interval -= delta;
593be: 9481 subl %d1,%d2 <== NOT EXECUTED
} else {
delta_interval = 0;
}
first_watchdog->delta_interval = delta_interval;
593c0: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED
}
ts->Interval_watchdogs.last_snapshot = snapshot;
593c4: 2540 003c movel %d0,%a2@(60) <== NOT EXECUTED
_ISR_Enable( level );
593c8: 46c3 movew %d3,%sr <== NOT EXECUTED
_Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
593ca: 4868 0010 pea %a0@(16) <== NOT EXECUTED
593ce: 486a 0030 pea %a2@(48) <== NOT EXECUTED
593d2: 4eb9 0005 d56c jsr 5d56c <_Watchdog_Insert> <== NOT EXECUTED
if ( !ts->active ) {
593d8: 508f addql #8,%sp <== NOT EXECUTED
593da: 102a 007c moveb %a2@(124),%d0 <== NOT EXECUTED
593de: 6600 ff2a bnew 5930a <_Timer_server_Schedule_operation_method+0x50><== NOT EXECUTED
_Timer_server_Reset_interval_system_watchdog( ts );
593e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
593e4: 4eba fbd2 jsr %pc@(58fb8 <_Timer_server_Reset_interval_system_watchdog>)<== NOT EXECUTED
593e8: 588f addql #4,%sp <== NOT EXECUTED
* critical section. We have to use the protected chain methods because
* we may be interrupted by a higher priority interrupt.
*/
_Chain_Append( ts->insert_chain, &timer->Object.Node );
}
}
593ea: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
593f0: 4e5e unlk %fp <== NOT EXECUTED
if ( !ts->active ) {
_Timer_server_Reset_tod_system_watchdog( ts );
}
}
_Thread_Enable_dispatch();
593f2: 4ef9 0005 c3da jmp 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
delta_interval = first_watchdog->delta_interval;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
593f8: 4282 clrl %d2 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
593fa: 2342 0010 movel %d2,%a1@(16) <== NOT EXECUTED
593fe: 60c4 bras 593c4 <_Timer_server_Schedule_operation_method+0x10a><== NOT EXECUTED
}
} else {
/*
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
59400: d283 addl %d3,%d1 <== NOT EXECUTED
delta_interval += delta;
59402: 9280 subl %d0,%d1 <== NOT EXECUTED
}
first_watchdog->delta_interval = delta_interval;
59404: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
59408: 6000 ff50 braw 5935a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
*/
delta = snapshot - last_snapshot;
if (delta_interval > delta) {
delta_interval -= delta;
} else {
delta_interval = 0;
5940c: 4281 clrl %d1 <== NOT EXECUTED
* Someone put us in the past.
*/
delta = last_snapshot - snapshot;
delta_interval += delta;
}
first_watchdog->delta_interval = delta_interval;
5940e: 2341 0010 movel %d1,%a1@(16) <== NOT EXECUTED
59412: 6000 ff46 braw 5935a <_Timer_server_Schedule_operation_method+0xa0><== NOT EXECUTED
000494b4 <_Timespec_Add_to>:
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
494b4: 4e56 0000 linkw %fp,#0
494b8: 226e 0008 moveal %fp@(8),%a1
494bc: 2f0a movel %a2,%sp@-
494be: 246e 000c moveal %fp@(12),%a2
uint32_t seconds = add->tv_sec;
/* Add the basics */
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
494c2: 206a 0004 moveal %a2@(4),%a0
494c6: d1e9 0004 addal %a1@(4),%a0
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
494ca: 2208 movel %a0,%d1
uint32_t _Timespec_Add_to(
struct timespec *time,
const struct timespec *add
)
{
uint32_t seconds = add->tv_sec;
494cc: 2012 movel %a2@,%d0
/* Add the basics */
time->tv_sec += add->tv_sec;
494ce: d191 addl %d0,%a1@
time->tv_nsec += add->tv_nsec;
494d0: 2348 0004 movel %a0,%a1@(4)
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
494d4: b1fc 3b9a c9ff cmpal #999999999,%a0
494da: 631a blss 494f6 <_Timespec_Add_to+0x42> <== ALWAYS TAKEN
494dc: 2051 moveal %a1@,%a0 <== NOT EXECUTED
*
* This routines adds two timespecs. The second argument is added
* to the first.
*/
uint32_t _Timespec_Add_to(
494de: 5288 addql #1,%a0 <== NOT EXECUTED
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
time->tv_nsec -= TOD_NANOSECONDS_PER_SECOND;
494e0: 0681 c465 3600 addil #-1000000000,%d1 <== NOT EXECUTED
time->tv_sec++;
seconds++;
494e6: 5280 addql #1,%d0 <== NOT EXECUTED
/* Add the basics */
time->tv_sec += add->tv_sec;
time->tv_nsec += add->tv_nsec;
/* Now adjust it so nanoseconds is in range */
while ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND ) {
494e8: 0c81 3b9a c9ff cmpil #999999999,%d1 <== NOT EXECUTED
494ee: 62ee bhis 494de <_Timespec_Add_to+0x2a> <== NOT EXECUTED
494f0: 2341 0004 movel %d1,%a1@(4) <== NOT EXECUTED
494f4: 2288 movel %a0,%a1@ <== NOT EXECUTED
time->tv_sec++;
seconds++;
}
return seconds;
}
494f6: 245f moveal %sp@+,%a2
494f8: 4e5e unlk %fp <== NOT EXECUTED
0004afe8 <_Timespec_Divide>:
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4afe8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
4afec: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
4aff0: 48d7 3c3c moveml %d2-%d5/%a2-%a5,%sp@ <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4aff4: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4affa: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4affe: 45f9 0005 b78c lea 5b78c <__muldi3>,%a2 <== NOT EXECUTED
4b004: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b006: 2a10 movel %a0@,%d5 <== NOT EXECUTED
left += lhs->tv_nsec;
4b008: 2828 0004 movel %a0@(4),%d4 <== NOT EXECUTED
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b00c: 2f13 movel %a3@,%sp@- <== NOT EXECUTED
4b00e: 5bc0 smi %d0 <== NOT EXECUTED
4b010: 49c0 extbl %d0 <== NOT EXECUTED
4b012: 2f00 movel %d0,%sp@- <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b014: 286e 0010 moveal %fp@(16),%a4 <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b018: 4e92 jsr %a2@ <== NOT EXECUTED
4b01a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b01e: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b020: 2241 moveal %d1,%a1 <== NOT EXECUTED
right += rhs->tv_nsec;
4b022: 262b 0004 movel %a3@(4),%d3 <== NOT EXECUTED
4b026: 5bc2 smi %d2 <== NOT EXECUTED
4b028: 49c2 extbl %d2 <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs,
uint32_t *ival_percentage,
uint32_t *fval_percentage
)
{
4b02a: 266e 0014 moveal %fp@(20),%a3 <== NOT EXECUTED
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
right += rhs->tv_nsec;
4b02e: 2208 movel %a0,%d1 <== NOT EXECUTED
4b030: d689 addl %a1,%d3 <== NOT EXECUTED
4b032: d581 addxl %d1,%d2 <== NOT EXECUTED
if ( right == 0 ) {
4b034: 6700 0086 beqw 4b0bc <_Timespec_Divide+0xd4> <== NOT EXECUTED
* Put it back in the timespec result.
*
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
4b038: 4bf9 0005 bfd8 lea 5bfd8 <__udivdi3>,%a5 <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
left = lhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
4b03e: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
4b044: 42a7 clrl %sp@- <== NOT EXECUTED
4b046: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4b048: 5bc1 smi %d1 <== NOT EXECUTED
4b04a: 49c1 extbl %d1 <== NOT EXECUTED
4b04c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
left += lhs->tv_nsec;
4b04e: 2a04 movel %d4,%d5 <== NOT EXECUTED
4b050: 5bc4 smi %d4 <== NOT EXECUTED
4b052: 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;
4b054: 4e92 jsr %a2@ <== NOT EXECUTED
4b056: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b05a: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b05c: 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;
4b05e: 2f3c 0001 86a0 movel #100000,%sp@- <== NOT EXECUTED
4b064: 2008 movel %a0,%d0 <== NOT EXECUTED
4b066: 2209 movel %a1,%d1 <== NOT EXECUTED
4b068: 42a7 clrl %sp@- <== NOT EXECUTED
4b06a: d285 addl %d5,%d1 <== NOT EXECUTED
4b06c: d184 addxl %d4,%d0 <== NOT EXECUTED
4b06e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b070: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b072: 4e92 jsr %a2@ <== NOT EXECUTED
4b074: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b078: 2e83 movel %d3,%sp@ <== NOT EXECUTED
4b07a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b07c: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b07e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b080: 4e95 jsr %a5@ <== NOT EXECUTED
4b082: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b086: 2400 movel %d0,%d2 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b088: 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;
4b08c: 2601 movel %d1,%d3 <== NOT EXECUTED
*ival_percentage = answer / 1000;
4b08e: 42a7 clrl %sp@- <== NOT EXECUTED
4b090: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b092: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b094: 4e95 jsr %a5@ <== NOT EXECUTED
4b096: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b09a: 4878 03e8 pea 3e8 <DBL_MANT_DIG+0x3b3> <== NOT EXECUTED
4b09e: 42a7 clrl %sp@- <== NOT EXECUTED
* TODO: Rounding on the last digit of the fval.
*/
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
4b0a0: 2881 movel %d1,%a4@ <== NOT EXECUTED
*fval_percentage = answer % 1000;
4b0a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b0a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0a6: 4eb9 0005 c364 jsr 5c364 <__umoddi3> <== NOT EXECUTED
4b0ac: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b0b0: 2681 movel %d1,%a3@ <== NOT EXECUTED
}
4b0b2: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b0b8: 4e5e unlk %fp <== NOT EXECUTED
4b0ba: 4e75 rts <== NOT EXECUTED
left += lhs->tv_nsec;
right = rhs->tv_sec * (uint64_t)TOD_NANOSECONDS_PER_SECOND;
right += rhs->tv_nsec;
if ( right == 0 ) {
*ival_percentage = 0;
4b0bc: 4294 clrl %a4@ <== NOT EXECUTED
*fval_percentage = 0;
4b0be: 4293 clrl %a3@ <== NOT EXECUTED
answer = (left * 100000) / right;
*ival_percentage = answer / 1000;
*fval_percentage = answer % 1000;
}
4b0c0: 4cee 3c3c ffe0 moveml %fp@(-32),%d2-%d5/%a2-%a5 <== NOT EXECUTED
4b0c6: 4e5e unlk %fp <== NOT EXECUTED
...
0004b058 <_Timespec_Divide_by_integer>:
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b058: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4b05c: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
t = time->tv_sec;
t *= TOD_NANOSECONDS_PER_SECOND;
4b060: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b066: 286e 0008 moveal %fp@(8),%a4 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b06a: 47f9 0005 baec lea 5baec <__udivdi3>,%a3 <== NOT EXECUTED
/*
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
t = time->tv_sec;
t *= TOD_NANOSECONDS_PER_SECOND;
4b070: 42a7 clrl %sp@- <== NOT EXECUTED
void _Timespec_Divide_by_integer(
const struct timespec *time,
uint32_t iterations,
struct timespec *result
)
{
4b072: 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;
4b076: 2f14 movel %a4@,%sp@- <== NOT EXECUTED
4b078: 5bc0 smi %d0 <== NOT EXECUTED
4b07a: 49c0 extbl %d0 <== NOT EXECUTED
4b07c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4b07e: 4eb9 0005 b2a0 jsr 5b2a0 <__muldi3> <== NOT EXECUTED
4b084: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b088: 2040 moveal %d0,%a0 <== NOT EXECUTED
4b08a: 2241 moveal %d1,%a1 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b08c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4b090: 2408 movel %a0,%d2 <== NOT EXECUTED
4b092: 2609 movel %a1,%d3 <== NOT EXECUTED
* For math simplicity just convert the timespec to nanoseconds
* in a 64-bit integer.
*/
t = time->tv_sec;
t *= TOD_NANOSECONDS_PER_SECOND;
t += time->tv_nsec;
4b094: 222c 0004 movel %a4@(4),%d1 <== NOT EXECUTED
4b098: 5bc0 smi %d0 <== NOT EXECUTED
4b09a: 49c0 extbl %d0 <== NOT EXECUTED
/*
* Divide to get nanoseconds per iteration
*/
t /= iterations;
4b09c: 42a7 clrl %sp@- <== NOT EXECUTED
4b09e: d681 addl %d1,%d3 <== NOT EXECUTED
4b0a0: d580 addxl %d0,%d2 <== NOT EXECUTED
4b0a2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b0a4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0a6: 4e93 jsr %a3@ <== NOT EXECUTED
4b0a8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b0ac: 2400 movel %d0,%d2 <== NOT EXECUTED
4b0ae: 2601 movel %d1,%d3 <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b0b0: 2f3c 3b9a ca00 movel #1000000000,%sp@- <== NOT EXECUTED
4b0b6: 42a7 clrl %sp@- <== NOT EXECUTED
4b0b8: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4b0ba: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0bc: 4e93 jsr %a3@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b0be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4b0c2: 2ebc 3b9a ca00 movel #1000000000,%sp@ <== NOT EXECUTED
4b0c8: 42a7 clrl %sp@- <== NOT EXECUTED
/*
* Put it back in the timespec result
*/
result->tv_sec = t / TOD_NANOSECONDS_PER_SECOND;
4b0ca: 2481 movel %d1,%a2@ <== NOT EXECUTED
result->tv_nsec = t % TOD_NANOSECONDS_PER_SECOND;
4b0cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4b0ce: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4b0d0: 4eb9 0005 be78 jsr 5be78 <__umoddi3> <== NOT EXECUTED
4b0d6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4b0da: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
4b0de: 4cee 1c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a4 <== NOT EXECUTED
4b0e4: 4e5e unlk %fp <== NOT EXECUTED
0004a214 <_Timespec_From_ticks>:
struct timespec *time
)
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
4a214: 43f9 0005 ee70 lea 5ee70 <Configuration+0xc>,%a1 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
4a21a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
4a21e: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4a222: 4c11 0800 mulsl %a1@,%d0 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
4a226: 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;
4a228: 243c 000f 4240 movel #1000000,%d2 <== NOT EXECUTED
void _Timespec_From_ticks(
uint32_t ticks,
struct timespec *time
)
{
4a22e: 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;
4a232: 4c42 0001 remul %d2,%d1,%d0 <== NOT EXECUTED
4a236: 4c42 0000 remul %d2,%d0,%d0 <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
TOD_NANOSECONDS_PER_MICROSECOND;
}
4a23a: 241f movel %sp@+,%d2 <== NOT EXECUTED
4a23c: 4e5e unlk %fp <== NOT EXECUTED
{
uint32_t usecs;
usecs = ticks * rtems_configuration_get_microseconds_per_tick();
time->tv_sec = usecs / TOD_MICROSECONDS_PER_SECOND;
4a23e: 2080 movel %d0,%a0@ <== NOT EXECUTED
time->tv_nsec = (usecs % TOD_MICROSECONDS_PER_SECOND) *
4a240: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
4a246: 4c01 0800 mulsl %d1,%d0 <== NOT EXECUTED
4a24a: 2140 0004 movel %d0,%a0@(4) <== NOT EXECUTED
TOD_NANOSECONDS_PER_MICROSECOND;
}
0004b0e8 <_Timespec_Greater_than>:
bool _Timespec_Greater_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4b0e8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b0ec: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4b0f0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec > rhs->tv_sec )
4b0f4: 2211 movel %a1@,%d1 <== NOT EXECUTED
4b0f6: 2010 movel %a0@,%d0 <== NOT EXECUTED
4b0f8: b081 cmpl %d1,%d0 <== NOT EXECUTED
4b0fa: 6d18 blts 4b114 <_Timespec_Greater_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec < rhs->tv_sec )
4b0fc: 6e10 bgts 4b10e <_Timespec_Greater_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
4b0fe: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4b102: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
4b106: 5dc0 slt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
4b108: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Greater_than(
4b10a: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
4b10c: 4e75 rts <== NOT EXECUTED
4b10e: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
if ( lhs->tv_sec < rhs->tv_sec )
return false;
4b110: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
4b112: 4e75 rts <== NOT EXECUTED
4b114: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec > rhs->tv_sec )
return true;
4b116: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec > rhs->tv_nsec )
return true;
return false;
}
...
0004a250 <_Timespec_Is_valid>:
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
const struct timespec *time
)
{
4a250: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a254: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !time )
4a258: 4a88 tstl %a0 <== NOT EXECUTED
4a25a: 6718 beqs 4a274 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_sec < 0 )
4a25c: 4a90 tstl %a0@ <== NOT EXECUTED
4a25e: 6d14 blts 4a274 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
return false;
if ( time->tv_nsec < 0 )
4a260: 2028 0004 movel %a0@(4),%d0 <== NOT EXECUTED
4a264: 6d0e blts 4a274 <_Timespec_Is_valid+0x24> <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
4a266: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Is_valid(
4a268: 0c80 3b9a c9ff cmpil #999999999,%d0 <== NOT EXECUTED
4a26e: 53c0 sls %d0 <== NOT EXECUTED
4a270: 4480 negl %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
4a272: 4e75 rts <== NOT EXECUTED
4a274: 4e5e unlk %fp <== NOT EXECUTED
if ( time->tv_sec < 0 )
return false;
if ( time->tv_nsec < 0 )
return false;
4a276: 4200 clrb %d0 <== NOT EXECUTED
if ( time->tv_nsec >= TOD_NANOSECONDS_PER_SECOND )
return false;
return true;
}
...
0004b11c <_Timespec_Less_than>:
bool _Timespec_Less_than(
const struct timespec *lhs,
const struct timespec *rhs
)
{
4b11c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4b120: 226e 0008 moveal %fp@(8),%a1 <== NOT EXECUTED
4b124: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
if ( lhs->tv_sec < rhs->tv_sec )
4b128: 2211 movel %a1@,%d1 <== NOT EXECUTED
4b12a: 2010 movel %a0@,%d0 <== NOT EXECUTED
4b12c: b081 cmpl %d1,%d0 <== NOT EXECUTED
4b12e: 6e18 bgts 4b148 <_Timespec_Less_than+0x2c> <== NOT EXECUTED
return true;
if ( lhs->tv_sec > rhs->tv_sec )
4b130: 6d10 blts 4b142 <_Timespec_Less_than+0x26> <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4b132: 2068 0004 moveal %a0@(4),%a0 <== NOT EXECUTED
4b136: b1e9 0004 cmpal %a1@(4),%a0 <== NOT EXECUTED
4b13a: 5ec0 sgt %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4b13c: 4e5e unlk %fp <== NOT EXECUTED
#include <rtems/system.h>
#include <rtems/score/timespec.h>
#include <rtems/score/tod.h>
bool _Timespec_Less_than(
4b13e: 4480 negl %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4b140: 4e75 rts <== NOT EXECUTED
4b142: 4e5e unlk %fp <== NOT EXECUTED
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
if ( lhs->tv_sec > rhs->tv_sec )
return false;
4b144: 4200 clrb %d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
4b146: 4e75 rts <== NOT EXECUTED
4b148: 4e5e unlk %fp <== NOT EXECUTED
const struct timespec *lhs,
const struct timespec *rhs
)
{
if ( lhs->tv_sec < rhs->tv_sec )
return true;
4b14a: 7001 moveq #1,%d0 <== NOT EXECUTED
/* ASSERT: lhs->tv_sec == rhs->tv_sec */
if ( lhs->tv_nsec < rhs->tv_nsec )
return true;
return false;
}
...
000494fc <_Timespec_Subtract>:
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
494fc: 4e56 0000 linkw %fp,#0
49500: 226e 0008 moveal %fp@(8),%a1
49504: 2f0a movel %a2,%sp@-
49506: 246e 000c moveal %fp@(12),%a2
4950a: 206e 0010 moveal %fp@(16),%a0
if (end->tv_nsec < start->tv_nsec) {
4950e: 222a 0004 movel %a2@(4),%d1
49512: 2029 0004 movel %a1@(4),%d0
void _Timespec_Subtract(
const struct timespec *start,
const struct timespec *end,
struct timespec *result
)
{
49516: 2f02 movel %d2,%sp@-
if (end->tv_nsec < start->tv_nsec) {
49518: b081 cmpl %d1,%d0
4951a: 6e14 bgts 49530 <_Timespec_Subtract+0x34> <== NEVER TAKEN
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
4951c: 2412 movel %a2@,%d2
4951e: 9491 subl %a1@,%d2
result->tv_nsec = end->tv_nsec - start->tv_nsec;
49520: 9280 subl %d0,%d1
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
49522: 2082 movel %d2,%a0@
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
49524: 241f movel %sp@+,%d2
49526: 245f moveal %sp@+,%a2
49528: 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;
4952a: 2141 0004 movel %d1,%a0@(4)
}
}
4952e: 4e75 rts
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
49530: 2452 moveal %a2@,%a2 <== NOT EXECUTED
49532: 538a subql #1,%a2 <== NOT EXECUTED
49534: 95d1 subal %a1@,%a2 <== NOT EXECUTED
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
49536: 0681 3b9a ca00 addil #1000000000,%d1 <== NOT EXECUTED
4953c: 9280 subl %d0,%d1 <== NOT EXECUTED
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
4953e: 241f movel %sp@+,%d2 <== NOT EXECUTED
struct timespec *result
)
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
49540: 208a movel %a2,%a0@ <== NOT EXECUTED
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
49542: 245f moveal %sp@+,%a2 <== NOT EXECUTED
49544: 4e5e unlk %fp <== NOT EXECUTED
{
if (end->tv_nsec < start->tv_nsec) {
result->tv_sec = end->tv_sec - start->tv_sec - 1;
result->tv_nsec =
(TOD_NANOSECONDS_PER_SECOND - start->tv_nsec) + end->tv_nsec;
49546: 2141 0004 movel %d1,%a0@(4) <== NOT EXECUTED
} else {
result->tv_sec = end->tv_sec - start->tv_sec;
result->tv_nsec = end->tv_nsec - start->tv_nsec;
}
}
0004a2cc <_Timespec_To_ticks>:
*/
uint32_t _Timespec_To_ticks(
const struct timespec *time
)
{
4a2cc: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4a2d0: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
4a2d4: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
4a2d8: 2412 movel %a2@,%d2 <== NOT EXECUTED
4a2da: 6606 bnes 4a2e2 <_Timespec_To_ticks+0x16> <== NOT EXECUTED
4a2dc: 4aaa 0004 tstl %a2@(4) <== NOT EXECUTED
4a2e0: 673e beqs 4a320 <_Timespec_To_ticks+0x54> <== NOT EXECUTED
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4a2e2: 4eb9 0004 c9fc jsr 4c9fc <TOD_TICKS_PER_SECOND_method> <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4a2e8: 2239 0005 ee70 movel 5ee70 <Configuration+0xc>,%d1 <== NOT EXECUTED
4a2ee: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
4a2f4: 4c03 1800 mulsl %d3,%d1 <== NOT EXECUTED
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
ticks = time->tv_sec * TOD_TICKS_PER_SECOND;
4a2f8: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
4a2fc: 262a 0004 movel %a2@(4),%d3 <== NOT EXECUTED
4a300: 4c41 3003 remul %d1,%d3,%d3 <== NOT EXECUTED
4a304: d083 addl %d3,%d0 <== NOT EXECUTED
if (ticks)
4a306: 670a beqs 4a312 <_Timespec_To_ticks+0x46> <== NOT EXECUTED
return ticks;
return 1;
}
4a308: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4a30e: 4e5e unlk %fp <== NOT EXECUTED
4a310: 4e75 rts <== NOT EXECUTED
ticks += time->tv_nsec / rtems_configuration_get_nanoseconds_per_tick();
if (ticks)
return ticks;
return 1;
4a312: 103c 0001 moveb #1,%d0 <== NOT EXECUTED
}
4a316: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4a31c: 4e5e unlk %fp <== NOT EXECUTED
4a31e: 4e75 rts <== NOT EXECUTED
)
{
uint32_t ticks;
if ( (time->tv_sec == 0) && (time->tv_nsec == 0) )
return 0;
4a320: 4280 clrl %d0 <== NOT EXECUTED
if (ticks)
return ticks;
return 1;
}
4a322: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4a328: 4e5e unlk %fp <== NOT EXECUTED
0004968e <_User_extensions_Fatal>:
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
4968e: 4e56 fff0 linkw %fp,#-16
49692: 48d7 041c moveml %d2-%d4/%a2,%sp@
49696: 242e 0008 movel %fp@(8),%d2
4969a: 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 );
}
}
4969e: 2479 0005 e6b0 moveal 5e6b0 <_User_extensions_List+0x8>,%a2
void _User_extensions_Fatal (
Internal_errors_Source the_source,
bool is_internal,
Internal_errors_t the_error
)
{
496a4: 182e 000f moveb %fp@(15),%d4
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
496a8: b5fc 0005 e6a8 cmpal #386728,%a2
496ae: 6726 beqs 496d6 <_User_extensions_Fatal+0x48> <== NEVER TAKEN
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
496b0: 0284 0000 00ff andil #255,%d4
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
496b6: 206a 0030 moveal %a2@(48),%a0
496ba: 4a88 tstl %a0
496bc: 670c beqs 496ca <_User_extensions_Fatal+0x3c>
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
496be: 2f03 movel %d3,%sp@-
496c0: 2f04 movel %d4,%sp@-
496c2: 2f02 movel %d2,%sp@-
496c4: 4e90 jsr %a0@
496c6: 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 ) {
496ca: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
496ce: b5fc 0005 e6a8 cmpal #386728,%a2
496d4: 66e0 bnes 496b6 <_User_extensions_Fatal+0x28> <== ALWAYS TAKEN
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
496d6: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
496dc: 4e5e unlk %fp <== NOT EXECUTED
0004954c <_User_extensions_Handler_initialization>:
#include <rtems/score/userext.h>
#include <rtems/score/wkspace.h>
#include <string.h>
void _User_extensions_Handler_initialization(void)
{
4954c: 4e56 ffec linkw %fp,#-20
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
49550: 203c 0005 e6ac movel #386732,%d0
49556: 23c0 0005 e6a8 movel %d0,5e6a8 <_User_extensions_List>
head->previous = NULL;
tail->previous = head;
4955c: 203c 0005 e6a8 movel #386728,%d0
49562: 23c0 0005 e6b0 movel %d0,5e6b0 <_User_extensions_List+0x8>
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
49568: 203c 0005 e540 movel #386368,%d0
4956e: 23c0 0005 e53c movel %d0,5e53c <_User_extensions_Switches_list>
head->previous = NULL;
tail->previous = head;
49574: 203c 0005 e53c movel #386364,%d0
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
4957a: 42b9 0005 e6ac clrl 5e6ac <_User_extensions_List+0x4>
49580: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
User_extensions_Control *extension;
uint32_t i;
uint32_t number_of_extensions;
User_extensions_Table *initial_extensions;
number_of_extensions = Configuration.number_of_initial_extensions;
49584: 2439 0005 cd4e movel 5cd4e <Configuration+0x3a>,%d2
initial_extensions = Configuration.User_extension_table;
4958a: 2639 0005 cd52 movel 5cd52 <Configuration+0x3e>,%d3
49590: 42b9 0005 e540 clrl 5e540 <_User_extensions_Switches_list+0x4>
tail->previous = head;
49596: 23c0 0005 e544 movel %d0,5e544 <_User_extensions_Switches_list+0x8>
_Chain_Initialize_empty( &_User_extensions_List );
_Chain_Initialize_empty( &_User_extensions_Switches_list );
if ( initial_extensions ) {
4959c: 4a83 tstl %d3
4959e: 6764 beqs 49604 <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
extension = (User_extensions_Control *)
_Workspace_Allocate_or_fatal_error(
495a0: 7834 moveq #52,%d4
495a2: 4c02 4800 mulsl %d2,%d4
495a6: 2f04 movel %d4,%sp@-
495a8: 4eb9 0004 9b02 jsr 49b02 <_Workspace_Allocate_or_fatal_error>
495ae: 2440 moveal %d0,%a2
number_of_extensions * sizeof( User_extensions_Control )
);
memset (
495b0: 2f04 movel %d4,%sp@-
495b2: 42a7 clrl %sp@-
495b4: 2f00 movel %d0,%sp@-
495b6: 4eb9 0004 e200 jsr 4e200 <memset>
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
495bc: 4fef 0010 lea %sp@(16),%sp
495c0: 4a82 tstl %d2
495c2: 6740 beqs 49604 <_User_extensions_Handler_initialization+0xb8><== NEVER TAKEN
495c4: 4284 clrl %d4
495c6: 47f9 0004 c2b8 lea 4c2b8 <_User_extensions_Add_set>,%a3
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
495cc: 2043 moveal %d3,%a0
495ce: 5284 addql #1,%d4
495d0: 0683 0000 0020 addil #32,%d3
495d6: 2558 0014 movel %a0@+,%a2@(20)
495da: 2558 0018 movel %a0@+,%a2@(24)
495de: 2558 001c movel %a0@+,%a2@(28)
495e2: 2558 0020 movel %a0@+,%a2@(32)
495e6: 2558 0024 movel %a0@+,%a2@(36)
495ea: 2558 0028 movel %a0@+,%a2@(40)
495ee: 2558 002c movel %a0@+,%a2@(44)
495f2: 2550 0030 movel %a0@,%a2@(48)
_User_extensions_Add_set( extension );
495f6: 2f0a movel %a2,%sp@-
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
495f8: 45ea 0034 lea %a2@(52),%a2
495fc: 4e93 jsr %a3@
extension,
0,
number_of_extensions * sizeof( User_extensions_Control )
);
for ( i = 0 ; i < number_of_extensions ; i++ ) {
495fe: 588f addql #4,%sp
49600: b882 cmpl %d2,%d4
49602: 65c8 bcss 495cc <_User_extensions_Handler_initialization+0x80>
_User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
extension++;
}
}
}
49604: 4cee 0c1c ffec moveml %fp@(-20),%d2-%d4/%a2-%a3
4960a: 4e5e unlk %fp
...
0004adac <_User_extensions_Remove_set>:
#include <rtems/score/userext.h>
void _User_extensions_Remove_set (
User_extensions_Control *the_extension
)
{
4adac: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4adb0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4adb2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
_Chain_Extract( &the_extension->Node );
4adb6: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4adb8: 4eb9 0004 85c0 jsr 485c0 <_Chain_Extract> <== NOT EXECUTED
/*
* If a switch handler is present, remove it.
*/
if ( the_extension->Callouts.thread_switch != NULL )
4adbe: 588f addql #4,%sp <== NOT EXECUTED
4adc0: 4aaa 0024 tstl %a2@(36) <== NOT EXECUTED
4adc4: 6712 beqs 4add8 <_User_extensions_Remove_set+0x2c><== NOT EXECUTED
_Chain_Extract( &the_extension->Switch.Node );
4adc6: 508a addql #8,%a2 <== NOT EXECUTED
4adc8: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
}
4adcc: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4add0: 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 );
4add2: 4ef9 0004 85c0 jmp 485c0 <_Chain_Extract> <== NOT EXECUTED
}
4add8: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4addc: 4e5e unlk %fp <== NOT EXECUTED
00049610 <_User_extensions_Thread_begin>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
49610: 4e56 0000 linkw %fp,#0
49614: 2f0a movel %a2,%sp@-
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
49616: 2479 0005 e6a8 moveal 5e6a8 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_begin (
Thread_Control *executing
)
{
4961c: 2f02 movel %d2,%sp@-
4961e: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
49622: b5fc 0005 e6ac cmpal #386732,%a2
49628: 6718 beqs 49642 <_User_extensions_Thread_begin+0x32><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_begin != NULL )
4962a: 206a 0028 moveal %a2@(40),%a0
4962e: 4a88 tstl %a0
49630: 6706 beqs 49638 <_User_extensions_Thread_begin+0x28>
(*the_extension->Callouts.thread_begin)( executing );
49632: 2f02 movel %d2,%sp@-
49634: 4e90 jsr %a0@
49636: 588f addql #4,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
49638: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4963a: b5fc 0005 e6ac cmpal #386732,%a2
49640: 66e8 bnes 4962a <_User_extensions_Thread_begin+0x1a>
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_begin != NULL )
(*the_extension->Callouts.thread_begin)( executing );
}
}
49642: 242e fff8 movel %fp@(-8),%d2
49646: 246e fffc moveal %fp@(-4),%a2
4964a: 4e5e unlk %fp <== NOT EXECUTED
000496e0 <_User_extensions_Thread_create>:
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
496e0: 4e56 0000 linkw %fp,#0
496e4: 2f0a movel %a2,%sp@-
return false;
}
}
return true;
}
496e6: 2479 0005 e6a8 moveal 5e6a8 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
bool _User_extensions_Thread_create (
Thread_Control *the_thread
)
{
496ec: 2f02 movel %d2,%sp@-
496ee: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
496f2: b5fc 0005 e6ac cmpal #386732,%a2
496f8: 6722 beqs 4971c <_User_extensions_Thread_create+0x3c><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_create != NULL ) {
496fa: 206a 0014 moveal %a2@(20),%a0
496fe: 4a88 tstl %a0
49700: 6710 beqs 49712 <_User_extensions_Thread_create+0x32>
status = (*the_extension->Callouts.thread_create)(
49702: 2f02 movel %d2,%sp@-
49704: 2f39 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%sp@-
4970a: 4e90 jsr %a0@
_Thread_Executing,
the_thread
);
if ( !status )
4970c: 508f addql #8,%sp
4970e: 4a00 tstb %d0
49710: 6718 beqs 4972a <_User_extensions_Thread_create+0x4a><== NEVER TAKEN
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
49712: 2452 moveal %a2@,%a2
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
bool status;
for ( the_node = _Chain_First( &_User_extensions_List );
49714: b5fc 0005 e6ac cmpal #386732,%a2
4971a: 66de bnes 496fa <_User_extensions_Thread_create+0x1a>
return false;
}
}
return true;
}
4971c: 242e fff8 movel %fp@(-8),%d2
49720: 246e fffc moveal %fp@(-4),%a2
49724: 4e5e unlk %fp
if ( !status )
return false;
}
}
return true;
49726: 7001 moveq #1,%d0
}
49728: 4e75 rts
4972a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4972e: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
49732: 4e5e unlk %fp <== NOT EXECUTED
status = (*the_extension->Callouts.thread_create)(
_Thread_Executing,
the_thread
);
if ( !status )
return false;
49734: 4200 clrb %d0 <== NOT EXECUTED
}
}
return true;
}
00049738 <_User_extensions_Thread_delete>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
49738: 4e56 0000 linkw %fp,#0
4973c: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
4973e: 2479 0005 e6b0 moveal 5e6b0 <_User_extensions_List+0x8>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_delete (
Thread_Control *the_thread
)
{
49744: 2f02 movel %d2,%sp@-
49746: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4974a: b5fc 0005 e6a8 cmpal #386728,%a2
49750: 6720 beqs 49772 <_User_extensions_Thread_delete+0x3a><== NEVER TAKEN
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_delete != NULL )
49752: 206a 0020 moveal %a2@(32),%a0
49756: 4a88 tstl %a0
49758: 670c beqs 49766 <_User_extensions_Thread_delete+0x2e><== NEVER TAKEN
(*the_extension->Callouts.thread_delete)(
4975a: 2f02 movel %d2,%sp@-
4975c: 2f39 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%sp@-
49762: 4e90 jsr %a0@
49764: 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 ) {
49766: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4976a: b5fc 0005 e6a8 cmpal #386728,%a2
49770: 66e0 bnes 49752 <_User_extensions_Thread_delete+0x1a>
(*the_extension->Callouts.thread_delete)(
_Thread_Executing,
the_thread
);
}
}
49772: 242e fff8 movel %fp@(-8),%d2
49776: 246e fffc moveal %fp@(-4),%a2
4977a: 4e5e unlk %fp
...
0004964e <_User_extensions_Thread_exitted>:
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
4964e: 4e56 0000 linkw %fp,#0
49652: 2f0a movel %a2,%sp@-
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.fatal != NULL )
(*the_extension->Callouts.fatal)( the_source, is_internal, the_error );
}
}
49654: 2479 0005 e6b0 moveal 5e6b0 <_User_extensions_List+0x8>,%a2
}
void _User_extensions_Thread_exitted (
Thread_Control *executing
)
{
4965a: 2f02 movel %d2,%sp@-
4965c: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
49660: b5fc 0005 e6a8 cmpal #386728,%a2
49666: 671a beqs 49682 <_User_extensions_Thread_exitted+0x34><== NEVER TAKEN
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_exitted != NULL )
49668: 206a 002c moveal %a2@(44),%a0
4966c: 4a88 tstl %a0
4966e: 6706 beqs 49676 <_User_extensions_Thread_exitted+0x28><== ALWAYS TAKEN
(*the_extension->Callouts.thread_exitted)( executing );
49670: 2f02 movel %d2,%sp@- <== NOT EXECUTED
49672: 4e90 jsr %a0@ <== NOT EXECUTED
49674: 588f addql #4,%sp <== NOT EXECUTED
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
!_Chain_Is_head( &_User_extensions_List, the_node ) ;
the_node = the_node->previous ) {
49676: 246a 0004 moveal %a2@(4),%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_Last( &_User_extensions_List );
4967a: b5fc 0005 e6a8 cmpal #386728,%a2
49680: 66e6 bnes 49668 <_User_extensions_Thread_exitted+0x1a>
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_exitted != NULL )
(*the_extension->Callouts.thread_exitted)( executing );
}
}
49682: 242e fff8 movel %fp@(-8),%d2
49686: 246e fffc moveal %fp@(-4),%a2
4968a: 4e5e unlk %fp <== NOT EXECUTED
0004a424 <_User_extensions_Thread_restart>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a424: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4a428: 2f0a movel %a2,%sp@- <== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a42a: 2479 0005 f650 moveal 5f650 <_User_extensions_List>,%a2 <== NOT EXECUTED
#include <rtems/score/userext.h>
void _User_extensions_Thread_restart (
Thread_Control *the_thread
)
{
4a430: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a432: 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 );
4a436: b5fc 0005 f654 cmpal #390740,%a2 <== NOT EXECUTED
4a43c: 671e beqs 4a45c <_User_extensions_Thread_restart+0x38><== NOT EXECUTED
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_restart != NULL )
4a43e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
4a442: 4a88 tstl %a0 <== NOT EXECUTED
4a444: 670c beqs 4a452 <_User_extensions_Thread_restart+0x2e><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
4a446: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4a448: 2f39 0005 f6a0 movel 5f6a0 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4a44e: 4e90 jsr %a0@ <== NOT EXECUTED
4a450: 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 ) {
4a452: 2452 moveal %a2@,%a2 <== NOT EXECUTED
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
4a454: b5fc 0005 f654 cmpal #390740,%a2 <== NOT EXECUTED
4a45a: 66e2 bnes 4a43e <_User_extensions_Thread_restart+0x1a><== NOT EXECUTED
(*the_extension->Callouts.thread_restart)(
_Thread_Executing,
the_thread
);
}
}
4a45c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4a460: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4a464: 4e5e unlk %fp <== NOT EXECUTED
00049780 <_User_extensions_Thread_start>:
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
49780: 4e56 0000 linkw %fp,#0
49784: 2f0a movel %a2,%sp@-
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
49786: 2479 0005 e6a8 moveal 5e6a8 <_User_extensions_List>,%a2
#include <rtems/score/userext.h>
void _User_extensions_Thread_start (
Thread_Control *the_thread
)
{
4978c: 2f02 movel %d2,%sp@-
4978e: 242e 0008 movel %fp@(8),%d2
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
49792: b5fc 0005 e6ac cmpal #386732,%a2
49798: 671e beqs 497b8 <_User_extensions_Thread_start+0x38><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
the_extension = (User_extensions_Control *) the_node;
if ( the_extension->Callouts.thread_start != NULL )
4979a: 206a 0018 moveal %a2@(24),%a0
4979e: 4a88 tstl %a0
497a0: 670c beqs 497ae <_User_extensions_Thread_start+0x2e>
(*the_extension->Callouts.thread_start)(
497a2: 2f02 movel %d2,%sp@-
497a4: 2f39 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%sp@-
497aa: 4e90 jsr %a0@
497ac: 508f addql #8,%sp
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
!_Chain_Is_tail( &_User_extensions_List, the_node ) ;
the_node = the_node->next ) {
497ae: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Control *the_extension;
for ( the_node = _Chain_First( &_User_extensions_List );
497b0: b5fc 0005 e6ac cmpal #386732,%a2
497b6: 66e2 bnes 4979a <_User_extensions_Thread_start+0x1a>
(*the_extension->Callouts.thread_start)(
_Thread_Executing,
the_thread
);
}
}
497b8: 242e fff8 movel %fp@(-8),%d2
497bc: 246e fffc moveal %fp@(-4),%a2
497c0: 4e5e unlk %fp <== NOT EXECUTED
000497c4 <_User_extensions_Thread_switch>:
void _User_extensions_Thread_switch (
Thread_Control *executing,
Thread_Control *heir
)
{
497c4: 4e56 fff4 linkw %fp,#-12
497c8: 48d7 040c moveml %d2-%d3/%a2,%sp@
497cc: 262e 0008 movel %fp@(8),%d3
497d0: 242e 000c movel %fp@(12),%d2
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
497d4: 2479 0005 e53c moveal 5e53c <_User_extensions_Switches_list>,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
497da: b5fc 0005 e540 cmpal #386368,%a2
497e0: 6716 beqs 497f8 <_User_extensions_Thread_switch+0x34><== NEVER TAKEN
!_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
the_node = the_node->next ) {
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
497e2: 2f02 movel %d2,%sp@-
497e4: 2f03 movel %d3,%sp@-
497e6: 206a 0008 moveal %a2@(8),%a0
497ea: 4e90 jsr %a0@
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
!_Chain_Is_tail( &_User_extensions_Switches_list, the_node ) ;
the_node = the_node->next ) {
497ec: 2452 moveal %a2@,%a2
)
{
Chain_Node *the_node;
User_extensions_Switch_control *the_extension_switch;
for ( the_node = _Chain_First( &_User_extensions_Switches_list );
497ee: 508f addql #8,%sp
497f0: b5fc 0005 e540 cmpal #386368,%a2
497f6: 66ea bnes 497e2 <_User_extensions_Thread_switch+0x1e><== NEVER TAKEN
the_extension_switch = (User_extensions_Switch_control *) the_node;
(*the_extension_switch->thread_switch)( executing, heir );
}
}
497f8: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
497fe: 4e5e unlk %fp
...
0004b418 <_Watchdog_Adjust>:
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b418: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4b41c: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
4b420: 48d7 1c1c moveml %d2-%d4/%a2-%a4,%sp@ <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b424: 283c 0000 0700 movel #1792,%d4 <== NOT EXECUTED
4b42a: 2004 movel %d4,%d0 <== NOT EXECUTED
void _Watchdog_Adjust(
Chain_Control *header,
Watchdog_Adjust_directions direction,
Watchdog_Interval units
)
{
4b42c: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
4b430: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
ISR_Level level;
_ISR_Disable( level );
4b434: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b436: 8081 orl %d1,%d0 <== NOT EXECUTED
4b438: 46c0 movew %d0,%sr <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b43a: 244b moveal %a3,%a2 <== NOT EXECUTED
4b43c: 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 ) ) {
4b43e: b5c8 cmpal %a0,%a2 <== NOT EXECUTED
4b440: 6748 beqs 4b48a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
4b442: 4a89 tstl %a1 <== NOT EXECUTED
4b444: 6650 bnes 4b496 <_Watchdog_Adjust+0x7e> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b446: 4a82 tstl %d2 <== NOT EXECUTED
4b448: 6740 beqs 4b48a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b44a: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
4b44e: 49f9 0004 b694 lea 4b694 <_Watchdog_Tickle>,%a4 <== NOT EXECUTED
4b454: b682 cmpl %d2,%d3 <== NOT EXECUTED
4b456: 622c bhis 4b484 <_Watchdog_Adjust+0x6c> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
break;
} else {
units -= _Watchdog_First( header )->delta_interval;
_Watchdog_First( header )->delta_interval = 1;
4b458: 7001 moveq #1,%d0 <== NOT EXECUTED
4b45a: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
_ISR_Enable( level );
4b45e: 46c1 movew %d1,%sr <== NOT EXECUTED
_Watchdog_Tickle( header );
4b460: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4b462: 4e94 jsr %a4@ <== NOT EXECUTED
_ISR_Disable( level );
4b464: 2004 movel %d4,%d0 <== NOT EXECUTED
4b466: 40c1 movew %sr,%d1 <== NOT EXECUTED
4b468: 8081 orl %d1,%d0 <== NOT EXECUTED
4b46a: 46c0 movew %d0,%sr <== NOT EXECUTED
if ( _Chain_Is_empty( header ) )
4b46c: 588f addql #4,%sp <== NOT EXECUTED
while ( units ) {
if ( units < _Watchdog_First( header )->delta_interval ) {
_Watchdog_First( header )->delta_interval -= units;
break;
} else {
units -= _Watchdog_First( header )->delta_interval;
4b46e: 9483 subl %d3,%d2 <== NOT EXECUTED
}
}
_ISR_Enable( level );
}
4b470: 2013 movel %a3@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
4b472: 2040 moveal %d0,%a0 <== NOT EXECUTED
_Watchdog_Tickle( header );
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
4b474: b08a cmpl %a2,%d0 <== NOT EXECUTED
4b476: 6712 beqs 4b48a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
switch ( direction ) {
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
break;
case WATCHDOG_FORWARD:
while ( units ) {
4b478: 4a82 tstl %d2 <== NOT EXECUTED
4b47a: 670e beqs 4b48a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
if ( units < _Watchdog_First( header )->delta_interval ) {
4b47c: 2628 0010 movel %a0@(16),%d3 <== NOT EXECUTED
4b480: b483 cmpl %d3,%d2 <== NOT EXECUTED
4b482: 64d4 bccs 4b458 <_Watchdog_Adjust+0x40> <== NOT EXECUTED
_Watchdog_First( header )->delta_interval -= units;
4b484: 9682 subl %d2,%d3 <== NOT EXECUTED
4b486: 2143 0010 movel %d3,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b48a: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b48c: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4b492: 4e5e unlk %fp <== NOT EXECUTED
4b494: 4e75 rts <== NOT EXECUTED
* unmodified across that call.
*
* Till Straumann, 7/2003
*/
if ( !_Chain_Is_empty( header ) ) {
switch ( direction ) {
4b496: 7001 moveq #1,%d0 <== NOT EXECUTED
4b498: b089 cmpl %a1,%d0 <== NOT EXECUTED
4b49a: 66ee bnes 4b48a <_Watchdog_Adjust+0x72> <== NOT EXECUTED
case WATCHDOG_BACKWARD:
_Watchdog_First( header )->delta_interval += units;
4b49c: d5a8 0010 addl %d2,%a0@(16) <== NOT EXECUTED
}
break;
}
}
_ISR_Enable( level );
4b4a0: 46c1 movew %d1,%sr <== NOT EXECUTED
}
4b4a2: 4cee 1c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a4 <== NOT EXECUTED
4b4a8: 4e5e unlk %fp <== NOT EXECUTED
0005d4e4 <_Watchdog_Adjust_to_chain>:
Chain_Control *header,
Watchdog_Interval units_arg,
Chain_Control *to_fire
)
{
5d4e4: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
5d4e8: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
5d4ec: 48d7 3c1c moveml %d2-%d4/%a2-%a5,%sp@ <== NOT EXECUTED
5d4f0: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
5d4f4: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
Watchdog_Interval units = units_arg;
ISR_Level level;
Watchdog_Control *first;
if ( units <= 0 ) {
5d4f8: 6760 beqs 5d55a <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
return;
}
_ISR_Disable( level );
5d4fa: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
5d500: 2003 movel %d3,%d0 <== NOT EXECUTED
5d502: 40c2 movew %sr,%d2 <== NOT EXECUTED
5d504: 8082 orl %d2,%d0 <== NOT EXECUTED
5d506: 46c0 movew %d0,%sr <== NOT EXECUTED
5d508: 2a41 moveal %d1,%a5 <== NOT EXECUTED
5d50a: 205d moveal %a5@+,%a0 <== NOT EXECUTED
while ( 1 ) {
if ( units <= 0 ) {
break;
}
if ( _Chain_Is_empty( header ) ) {
5d50c: bbc8 cmpal %a0,%a5 <== NOT EXECUTED
5d50e: 6748 beqs 5d558 <_Watchdog_Adjust_to_chain+0x74> <== NOT EXECUTED
/*
* If it is longer than "units" until the first element on the chain
* fires, then bump it and quit.
*/
if ( units < first->delta_interval ) {
5d510: 2028 0010 movel %a0@(16),%d0 <== NOT EXECUTED
5d514: b880 cmpl %d0,%d4 <== NOT EXECUTED
5d516: 654a bcss 5d562 <_Watchdog_Adjust_to_chain+0x7e> <== NOT EXECUTED
/*
* The first set happens in less than units, so take all of them
* off the chain and adjust units to reflect this.
*/
units -= first->delta_interval;
5d518: 9880 subl %d0,%d4 <== NOT EXECUTED
first->delta_interval = 0;
5d51a: 42a8 0010 clrl %a0@(16) <== NOT EXECUTED
)
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
5d51e: 2850 moveal %a0@,%a4 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
5d520: 2009 movel %a1,%d0 <== NOT EXECUTED
5d522: 5880 addql #4,%d0 <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
5d524: 2668 0004 moveal %a0@(4),%a3 <== NOT EXECUTED
next->previous = previous;
5d528: 294b 0004 movel %a3,%a4@(4) <== NOT EXECUTED
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
5d52c: 2469 0008 moveal %a1@(8),%a2 <== NOT EXECUTED
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
next->previous = previous;
previous->next = next;
5d530: 268c movel %a4,%a3@ <== NOT EXECUTED
{
Chain_Node *tail = _Chain_Tail( the_chain );
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
5d532: 2348 0008 movel %a0,%a1@(8) <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Chain_Append_unprotected(
Chain_Control *the_chain,
Chain_Node *the_node
)
{
Chain_Node *tail = _Chain_Tail( the_chain );
5d536: 2080 movel %d0,%a0@ <== NOT EXECUTED
Chain_Node *old_last = tail->previous;
the_node->next = tail;
tail->previous = the_node;
old_last->next = the_node;
the_node->previous = old_last;
5d538: 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;
5d53c: 2488 movel %a0,%a2@ <== NOT EXECUTED
while ( 1 ) {
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
5d53e: 2003 movel %d3,%d0 <== NOT EXECUTED
5d540: 46c2 movew %d2,%sr <== NOT EXECUTED
5d542: 8082 orl %d2,%d0 <== NOT EXECUTED
5d544: 46c0 movew %d0,%sr <== NOT EXECUTED
break;
}
}
_ISR_Enable( level );
}
5d546: 2441 moveal %d1,%a2 <== NOT EXECUTED
5d548: 2052 moveal %a2@,%a0 <== NOT EXECUTED
_Chain_Extract_unprotected( &first->Node );
_Chain_Append_unprotected( to_fire, &first->Node );
_ISR_Flash( level );
if ( _Chain_Is_empty( header ) )
5d54a: b1cd cmpal %a5,%a0 <== NOT EXECUTED
5d54c: 6706 beqs 5d554 <_Watchdog_Adjust_to_chain+0x70> <== NOT EXECUTED
break;
first = _Watchdog_First( header );
if ( first->delta_interval != 0 )
5d54e: 4aa8 0010 tstl %a0@(16) <== NOT EXECUTED
5d552: 67ca beqs 5d51e <_Watchdog_Adjust_to_chain+0x3a> <== NOT EXECUTED
}
_ISR_Disable( level );
while ( 1 ) {
if ( units <= 0 ) {
5d554: 4a84 tstl %d4 <== NOT EXECUTED
5d556: 66b4 bnes 5d50c <_Watchdog_Adjust_to_chain+0x28> <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d558: 46c2 movew %d2,%sr <== NOT EXECUTED
}
5d55a: 4cd7 3c1c moveml %sp@,%d2-%d4/%a2-%a5 <== NOT EXECUTED
5d55e: 4e5e unlk %fp <== NOT EXECUTED
5d560: 4e75 rts <== NOT EXECUTED
/*
* If it is longer than "units" until the first element on the chain
* fires, then bump it and quit.
*/
if ( units < first->delta_interval ) {
first->delta_interval -= units;
5d562: 9084 subl %d4,%d0 <== NOT EXECUTED
5d564: 2140 0010 movel %d0,%a0@(16) <== NOT EXECUTED
if ( first->delta_interval != 0 )
break;
}
}
_ISR_Enable( level );
5d568: 46c2 movew %d2,%sr <== NOT EXECUTED
5d56a: 60ee bras 5d55a <_Watchdog_Adjust_to_chain+0x76> <== NOT EXECUTED
00049804 <_Watchdog_Insert>:
void _Watchdog_Insert(
Chain_Control *header,
Watchdog_Control *the_watchdog
)
{
49804: 4e56 ffec linkw %fp,#-20
49808: 226e 000c moveal %fp@(12),%a1
4980c: 48d7 043c moveml %d2-%d5/%a2,%sp@
49810: 246e 0008 moveal %fp@(8),%a2
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
_ISR_Disable( level );
49814: 2a3c 0000 0700 movel #1792,%d5
4981a: 2005 movel %d5,%d0
Watchdog_Control *after;
uint32_t insert_isr_nest_level;
Watchdog_Interval delta_interval;
insert_isr_nest_level = _ISR_Nest_level;
4981c: 2839 0005 e6f4 movel 5e6f4 <_Per_CPU_Information+0x8>,%d4
_ISR_Disable( level );
49822: 40c3 movew %sr,%d3
49824: 8083 orl %d3,%d0
49826: 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 ) {
49828: 4aa9 0008 tstl %a1@(8)
4982c: 6600 00c6 bnew 498f4 <_Watchdog_Insert+0xf0>
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
_Watchdog_Sync_count++;
49830: 2039 0005 e65c movel 5e65c <_Watchdog_Sync_count>,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
49836: 7201 moveq #1,%d1
_Watchdog_Sync_count++;
49838: 5280 addql #1,%d0
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
return;
}
the_watchdog->state = WATCHDOG_BEING_INSERTED;
4983a: 2341 0008 movel %d1,%a1@(8)
_Watchdog_Sync_count++;
4983e: 23c0 0005 e65c movel %d0,5e65c <_Watchdog_Sync_count>
restart:
delta_interval = the_watchdog->initial;
49844: 2029 000c movel %a1@(12),%d0
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
49848: 2052 moveal %a2@,%a0
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
4984a: 6764 beqs 498b0 <_Watchdog_Insert+0xac> <== NEVER TAKEN
4984c: 4a90 tstl %a0@
4984e: 6760 beqs 498b0 <_Watchdog_Insert+0xac> <== ALWAYS TAKEN
break;
if ( delta_interval < after->delta_interval ) {
49850: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
49854: b280 cmpl %d0,%d1 <== NOT EXECUTED
49856: 6252 bhis 498aa <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
49858: 2405 movel %d5,%d2 <== NOT EXECUTED
4985a: 46c3 movew %d3,%sr <== NOT EXECUTED
4985c: 8483 orl %d3,%d2 <== NOT EXECUTED
4985e: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49860: 7401 moveq #1,%d2 <== NOT EXECUTED
49862: b4a9 0008 cmpl %a1@(8),%d2 <== NOT EXECUTED
49866: 666e bnes 498d6 <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49868: 2439 0005 e5fc movel 5e5fc <_Watchdog_Sync_level>,%d2 <== NOT EXECUTED
4986e: b484 cmpl %d4,%d2 <== NOT EXECUTED
49870: 6230 bhis 498a2 <_Watchdog_Insert+0x9e> <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
49872: 9081 subl %d1,%d0 <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
49874: 2050 moveal %a0@,%a0 <== NOT EXECUTED
for ( after = _Watchdog_First( header ) ;
;
after = _Watchdog_Next( after ) ) {
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
49876: 4a80 tstl %d0 <== NOT EXECUTED
49878: 6736 beqs 498b0 <_Watchdog_Insert+0xac> <== NOT EXECUTED
4987a: 4a90 tstl %a0@ <== NOT EXECUTED
4987c: 6732 beqs 498b0 <_Watchdog_Insert+0xac> <== NOT EXECUTED
break;
if ( delta_interval < after->delta_interval ) {
4987e: 2228 0010 movel %a0@(16),%d1 <== NOT EXECUTED
49882: b081 cmpl %d1,%d0 <== NOT EXECUTED
49884: 6524 bcss 498aa <_Watchdog_Insert+0xa6> <== NOT EXECUTED
break;
}
delta_interval -= after->delta_interval;
_ISR_Flash( level );
49886: 2405 movel %d5,%d2 <== NOT EXECUTED
49888: 46c3 movew %d3,%sr <== NOT EXECUTED
4988a: 8483 orl %d3,%d2 <== NOT EXECUTED
4988c: 46c2 movew %d2,%sr <== NOT EXECUTED
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
break;
}
delta_interval -= after->delta_interval;
4988e: 9081 subl %d1,%d0 <== NOT EXECUTED
_ISR_Flash( level );
if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {
49890: 7201 moveq #1,%d1 <== NOT EXECUTED
49892: b2a9 0008 cmpl %a1@(8),%d1 <== NOT EXECUTED
49896: 663e bnes 498d6 <_Watchdog_Insert+0xd2> <== NOT EXECUTED
goto exit_insert;
}
if ( _Watchdog_Sync_level > insert_isr_nest_level ) {
49898: 2239 0005 e5fc movel 5e5fc <_Watchdog_Sync_level>,%d1 <== NOT EXECUTED
4989e: b284 cmpl %d4,%d1 <== NOT EXECUTED
498a0: 63d2 blss 49874 <_Watchdog_Insert+0x70> <== NOT EXECUTED
_Watchdog_Sync_level = insert_isr_nest_level;
498a2: 23c4 0005 e5fc movel %d4,5e5fc <_Watchdog_Sync_level> <== NOT EXECUTED
goto restart;
498a8: 609a bras 49844 <_Watchdog_Insert+0x40> <== NOT EXECUTED
if ( delta_interval == 0 || !_Watchdog_Next( after ) )
break;
if ( delta_interval < after->delta_interval ) {
after->delta_interval -= delta_interval;
498aa: 9280 subl %d0,%d1 <== NOT EXECUTED
498ac: 2141 0010 movel %d1,%a0@(16) <== NOT EXECUTED
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
498b0: 2068 0004 moveal %a0@(4),%a0
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(
Watchdog_Control *the_watchdog
)
{
the_watchdog->state = WATCHDOG_ACTIVE;
498b4: 7402 moveq #2,%d2
)
{
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
498b6: 2450 moveal %a0@,%a2
}
}
_Watchdog_Activate( the_watchdog );
the_watchdog->delta_interval = delta_interval;
498b8: 2340 0010 movel %d0,%a1@(16)
_Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
the_watchdog->start_time = _Watchdog_Ticks_since_boot;
498bc: 2039 0005 e660 movel 5e660 <_Watchdog_Ticks_since_boot>,%d0
498c2: 2342 0008 movel %d2,%a1@(8)
Chain_Node *the_node
)
{
Chain_Node *before_node;
the_node->previous = after_node;
498c6: 2348 0004 movel %a0,%a1@(4)
before_node = after_node->next;
after_node->next = the_node;
498ca: 2089 movel %a1,%a0@
the_node->next = before_node;
before_node->previous = the_node;
498cc: 2549 0004 movel %a1,%a2@(4)
Chain_Node *before_node;
the_node->previous = after_node;
before_node = after_node->next;
after_node->next = the_node;
the_node->next = before_node;
498d0: 228a movel %a2,%a1@
498d2: 2340 0014 movel %d0,%a1@(20)
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
498d6: 23c4 0005 e5fc movel %d4,5e5fc <_Watchdog_Sync_level>
_Watchdog_Sync_count--;
498dc: 2039 0005 e65c movel 5e65c <_Watchdog_Sync_count>,%d0
498e2: 5380 subql #1,%d0
498e4: 23c0 0005 e65c movel %d0,5e65c <_Watchdog_Sync_count>
_ISR_Enable( level );
498ea: 46c3 movew %d3,%sr
}
498ec: 4cd7 043c moveml %sp@,%d2-%d5/%a2
498f0: 4e5e unlk %fp
498f2: 4e75 rts
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_watchdog->state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
498f4: 46c3 movew %d3,%sr <== NOT EXECUTED
exit_insert:
_Watchdog_Sync_level = insert_isr_nest_level;
_Watchdog_Sync_count--;
_ISR_Enable( level );
}
498f6: 4cd7 043c moveml %sp@,%d2-%d5/%a2 <== NOT EXECUTED
498fa: 4e5e unlk %fp <== NOT EXECUTED
...
0004994c <_Watchdog_Remove>:
{
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
4994c: 203c 0000 0700 movel #1792,%d0
*/
Watchdog_States _Watchdog_Remove(
Watchdog_Control *the_watchdog
)
{
49952: 4e56 0000 linkw %fp,#0
49956: 206e 0008 moveal %fp@(8),%a0
4995a: 2f0a movel %a2,%sp@-
4995c: 2f02 movel %d2,%sp@-
ISR_Level level;
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
4995e: 40c1 movew %sr,%d1
49960: 8081 orl %d1,%d0
49962: 46c0 movew %d0,%sr
previous_state = the_watchdog->state;
49964: 2028 0008 movel %a0@(8),%d0
switch ( previous_state ) {
49968: 7401 moveq #1,%d2
4996a: b480 cmpl %d0,%d2
4996c: 6764 beqs 499d2 <_Watchdog_Remove+0x86> <== NEVER TAKEN
4996e: 6314 blss 49984 <_Watchdog_Remove+0x38>
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
49970: 2279 0005 e660 moveal 5e660 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED
49976: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
4997a: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state );
}
4997c: 241f movel %sp@+,%d2 <== NOT EXECUTED
4997e: 245f moveal %sp@+,%a2 <== NOT EXECUTED
49980: 4e5e unlk %fp <== NOT EXECUTED
49982: 4e75 rts <== NOT EXECUTED
Watchdog_States previous_state;
Watchdog_Control *next_watchdog;
_ISR_Disable( level );
previous_state = the_watchdog->state;
switch ( previous_state ) {
49984: 143c 0003 moveb #3,%d2
49988: b480 cmpl %d0,%d2
4998a: 65e4 bcss 49970 <_Watchdog_Remove+0x24> <== NEVER TAKEN
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
_ISR_Enable( level );
return( previous_state );
}
4998c: 2250 moveal %a0@,%a1
break;
case WATCHDOG_ACTIVE:
case WATCHDOG_REMOVE_IT:
the_watchdog->state = WATCHDOG_INACTIVE;
4998e: 42a8 0008 clrl %a0@(8)
next_watchdog = _Watchdog_Next( the_watchdog );
if ( _Watchdog_Next(next_watchdog) )
49992: 4a91 tstl %a1@
49994: 6708 beqs 4999e <_Watchdog_Remove+0x52> <== ALWAYS TAKEN
next_watchdog->delta_interval += the_watchdog->delta_interval;
49996: 2428 0010 movel %a0@(16),%d2 <== NOT EXECUTED
4999a: d5a9 0010 addl %d2,%a1@(16) <== NOT EXECUTED
if ( _Watchdog_Sync_count )
4999e: 2479 0005 e65c moveal 5e65c <_Watchdog_Sync_count>,%a2
499a4: 4a8a tstl %a2
499a6: 670c beqs 499b4 <_Watchdog_Remove+0x68> <== ALWAYS TAKEN
_Watchdog_Sync_level = _ISR_Nest_level;
499a8: 45f9 0005 e6f4 lea 5e6f4 <_Per_CPU_Information+0x8>,%a2 <== NOT EXECUTED
499ae: 23d2 0005 e5fc movel %a2@,5e5fc <_Watchdog_Sync_level> <== NOT EXECUTED
{
Chain_Node *next;
Chain_Node *previous;
next = the_node->next;
previous = the_node->previous;
499b4: 2468 0004 moveal %a0@(4),%a2
next->previous = previous;
499b8: 234a 0004 movel %a2,%a1@(4)
previous->next = next;
499bc: 2489 movel %a1,%a2@
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
499be: 2279 0005 e660 moveal 5e660 <_Watchdog_Ticks_since_boot>,%a1
499c4: 2149 0018 movel %a1,%a0@(24)
_ISR_Enable( level );
499c8: 46c1 movew %d1,%sr
return( previous_state );
}
499ca: 241f movel %sp@+,%d2
499cc: 245f moveal %sp@+,%a2
499ce: 4e5e unlk %fp
499d0: 4e75 rts
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
499d2: 2279 0005 e660 moveal 5e660 <_Watchdog_Ticks_since_boot>,%a1<== NOT EXECUTED
/*
* It is not actually on the chain so just change the state and
* the Insert operation we interrupted will be aborted.
*/
the_watchdog->state = WATCHDOG_INACTIVE;
499d8: 42a8 0008 clrl %a0@(8) <== NOT EXECUTED
_Watchdog_Sync_level = _ISR_Nest_level;
_Chain_Extract_unprotected( &the_watchdog->Node );
break;
}
the_watchdog->stop_time = _Watchdog_Ticks_since_boot;
499dc: 2149 0018 movel %a1,%a0@(24) <== NOT EXECUTED
_ISR_Enable( level );
499e0: 46c1 movew %d1,%sr <== NOT EXECUTED
return( previous_state );
}
499e2: 241f movel %sp@+,%d2 <== NOT EXECUTED
499e4: 245f moveal %sp@+,%a2 <== NOT EXECUTED
499e6: 4e5e unlk %fp <== NOT EXECUTED
...
0004ae64 <_Watchdog_Report>:
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4ae64: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
printk(
4ae68: 223c 0005 decd movel #384717,%d1 <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
4ae6e: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
4ae72: 48d7 003c moveml %d2-%d5,%sp@ <== NOT EXECUTED
4ae76: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
printk(
4ae7a: 2a28 0024 movel %a0@(36),%d5 <== NOT EXECUTED
4ae7e: 2828 0020 movel %a0@(32),%d4 <== NOT EXECUTED
4ae82: 2628 001c movel %a0@(28),%d3 <== NOT EXECUTED
4ae86: 2428 000c movel %a0@(12),%d2 <== NOT EXECUTED
4ae8a: 2268 0010 moveal %a0@(16),%a1 <== NOT EXECUTED
4ae8e: 4a80 tstl %d0 <== NOT EXECUTED
4ae90: 672a beqs 4aebc <_Watchdog_Report+0x58> <== NOT EXECUTED
4ae92: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4ae94: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4ae96: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ae98: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4ae9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ae9c: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4ae9e: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4aea0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4aea2: 4879 0005 e04e pea 5e04e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED
4aea8: 4eb9 0004 4874 jsr 44874 <printk> <== NOT EXECUTED
4aeae: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4aeb2: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
4aeb8: 4e5e unlk %fp <== NOT EXECUTED
4aeba: 4e75 rts <== NOT EXECUTED
void _Watchdog_Report(
const char *name,
Watchdog_Control *watch
)
{
printk(
4aebc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
4aebe: 223c 0005 ded2 movel #384722,%d1 <== NOT EXECUTED
4aec4: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4aec6: 2001 movel %d1,%d0 <== NOT EXECUTED
4aec8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4aeca: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4aecc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4aece: 2f09 movel %a1,%sp@- <== NOT EXECUTED
4aed0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
4aed2: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4aed4: 4879 0005 e04e pea 5e04e <_Status_Object_name_errors_to_status+0x4a><== NOT EXECUTED
4aeda: 4eb9 0004 4874 jsr 44874 <printk> <== NOT EXECUTED
4aee0: 4fef 0024 lea %sp@(36),%sp <== NOT EXECUTED
watch,
watch->routine,
watch->id,
watch->user_data
);
}
4aee4: 4cee 003c fff0 moveml %fp@(-16),%d2-%d5 <== NOT EXECUTED
4aeea: 4e5e unlk %fp <== NOT EXECUTED
...
0004ade8 <_Watchdog_Report_chain>:
)
{
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4ade8: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
void _Watchdog_Report_chain(
const char *name,
Chain_Control *header
)
{
4adee: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4adf2: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
4adf6: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4adfa: 266e 000c moveal %fp@(12),%a3 <== NOT EXECUTED
ISR_Level level;
Chain_Node *node;
_ISR_Disable( level );
4adfe: 40c3 movew %sr,%d3 <== NOT EXECUTED
4ae00: 8083 orl %d3,%d0 <== NOT EXECUTED
4ae02: 46c0 movew %d0,%sr <== NOT EXECUTED
printk( "Watchdog Chain: %s %p\n", name, header );
4ae04: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4ae06: 4bf9 0004 4874 lea 44874 <printk>,%a5 <== NOT EXECUTED
4ae0c: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ae0e: 4879 0005 e018 pea 5e018 <_Status_Object_name_errors_to_status+0x14><== NOT EXECUTED
4ae14: 4e95 jsr %a5@ <== NOT EXECUTED
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
}
4ae16: 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 ) ) {
4ae18: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ae1c: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4ae1e: 672c beqs 4ae4c <_Watchdog_Report_chain+0x64> <== NOT EXECUTED
4ae20: 49f9 0004 ae64 lea 4ae64 <_Watchdog_Report>,%a4 <== NOT EXECUTED
node != _Chain_Tail(header) ;
node = node->next )
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
4ae26: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4ae28: 42a7 clrl %sp@- <== NOT EXECUTED
4ae2a: 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 )
4ae2c: 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 ) ;
4ae2e: 508f addql #8,%sp <== NOT EXECUTED
4ae30: b7ca cmpal %a2,%a3 <== NOT EXECUTED
4ae32: 66f2 bnes 4ae26 <_Watchdog_Report_chain+0x3e> <== NOT EXECUTED
{
Watchdog_Control *watch = (Watchdog_Control *) node;
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
4ae34: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ae36: 4879 0005 e02f pea 5e02f <_Status_Object_name_errors_to_status+0x2b><== NOT EXECUTED
4ae3c: 4e95 jsr %a5@ <== NOT EXECUTED
4ae3e: 508f addql #8,%sp <== NOT EXECUTED
} else {
printk( "Chain is empty\n" );
}
_ISR_Enable( level );
4ae40: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4ae42: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4ae48: 4e5e unlk %fp <== NOT EXECUTED
4ae4a: 4e75 rts <== NOT EXECUTED
_Watchdog_Report( NULL, watch );
}
printk( "== end of %s \n", name );
} else {
printk( "Chain is empty\n" );
4ae4c: 4879 0005 e03e pea 5e03e <_Status_Object_name_errors_to_status+0x3a><== NOT EXECUTED
4ae52: 4e95 jsr %a5@ <== NOT EXECUTED
4ae54: 588f addql #4,%sp <== NOT EXECUTED
}
_ISR_Enable( level );
4ae56: 46c3 movew %d3,%sr <== NOT EXECUTED
}
4ae58: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
4ae5e: 4e5e unlk %fp <== NOT EXECUTED
...
000499ec <_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 );
499ec: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
*/
void _Watchdog_Tickle(
Chain_Control *header
)
{
499f2: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
499f6: 48d7 3c0c moveml %d2-%d3/%a2-%a5,%sp@ <== NOT EXECUTED
499fa: 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 );
499fe: 40c2 movew %sr,%d2 <== NOT EXECUTED
49a00: 8082 orl %d2,%d0 <== NOT EXECUTED
49a02: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49a04: 264c moveal %a4,%a3 <== NOT EXECUTED
49a06: 245b moveal %a3@+,%a2 <== NOT EXECUTED
* volatile data - till, 2003/7
*/
_ISR_Disable( level );
if ( _Chain_Is_empty( header ) )
49a08: b7ca cmpal %a2,%a3 <== NOT EXECUTED
49a0a: 673e beqs 49a4a <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
* to be inserted has already had its delta_interval adjusted to 0, and
* so is added to the head of the chain with a delta_interval of 0.
*
* Steven Johnson - 12/2005 (gcc-3.2.3 -O3 on powerpc)
*/
if (the_watchdog->delta_interval != 0) {
49a0c: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
49a10: 4bf9 0004 994c lea 4994c <_Watchdog_Remove>,%a5 <== NOT EXECUTED
49a16: 6708 beqs 49a20 <_Watchdog_Tickle+0x34> <== NOT EXECUTED
the_watchdog->delta_interval--;
49a18: 5380 subql #1,%d0 <== NOT EXECUTED
49a1a: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
49a1e: 662a bnes 49a4a <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49a20: 263c 0000 0700 movel #1792,%d3 <== NOT EXECUTED
if ( the_watchdog->delta_interval != 0 )
goto leave;
}
do {
watchdog_state = _Watchdog_Remove( the_watchdog );
49a26: 2f0a movel %a2,%sp@- <== NOT EXECUTED
49a28: 4e95 jsr %a5@ <== NOT EXECUTED
_ISR_Enable( level );
49a2a: 46c2 movew %d2,%sr <== NOT EXECUTED
switch( watchdog_state ) {
49a2c: 7202 moveq #2,%d1 <== NOT EXECUTED
49a2e: 588f addql #4,%sp <== NOT EXECUTED
49a30: b280 cmpl %d0,%d1 <== NOT EXECUTED
49a32: 6722 beqs 49a56 <_Watchdog_Tickle+0x6a> <== NOT EXECUTED
case WATCHDOG_REMOVE_IT:
break;
}
_ISR_Disable( level );
49a34: 2003 movel %d3,%d0 <== NOT EXECUTED
49a36: 40c2 movew %sr,%d2 <== NOT EXECUTED
49a38: 8082 orl %d2,%d0 <== NOT EXECUTED
49a3a: 46c0 movew %d0,%sr <== NOT EXECUTED
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
}
49a3c: 2014 movel %a4@,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE Watchdog_Control *_Watchdog_First(
Chain_Control *header
)
{
return ( (Watchdog_Control *) _Chain_First( header ) );
49a3e: 2440 moveal %d0,%a2 <== NOT EXECUTED
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
(the_watchdog->delta_interval == 0) );
49a40: b7c0 cmpal %d0,%a3 <== NOT EXECUTED
49a42: 6706 beqs 49a4a <_Watchdog_Tickle+0x5e> <== NOT EXECUTED
}
_ISR_Disable( level );
the_watchdog = _Watchdog_First( header );
} while ( !_Chain_Is_empty( header ) &&
49a44: 4aaa 0010 tstl %a2@(16) <== NOT EXECUTED
49a48: 67dc beqs 49a26 <_Watchdog_Tickle+0x3a> <== NOT EXECUTED
(the_watchdog->delta_interval == 0) );
leave:
_ISR_Enable(level);
49a4a: 46c2 movew %d2,%sr <== NOT EXECUTED
}
49a4c: 4cee 3c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a5 <== NOT EXECUTED
49a52: 4e5e unlk %fp <== NOT EXECUTED
49a54: 4e75 rts <== NOT EXECUTED
_ISR_Enable( level );
switch( watchdog_state ) {
case WATCHDOG_ACTIVE:
(*the_watchdog->routine)(
49a56: 2f2a 0024 movel %a2@(36),%sp@- <== NOT EXECUTED
49a5a: 2f2a 0020 movel %a2@(32),%sp@- <== NOT EXECUTED
49a5e: 206a 001c moveal %a2@(28),%a0 <== NOT EXECUTED
49a62: 4e90 jsr %a0@ <== NOT EXECUTED
the_watchdog->id,
the_watchdog->user_data
);
break;
49a64: 508f addql #8,%sp <== NOT EXECUTED
49a66: 60cc bras 49a34 <_Watchdog_Tickle+0x48> <== NOT EXECUTED
00049b02 <_Workspace_Allocate_or_fatal_error>:
* _Workspace_Allocate_or_fatal_error
*/
void *_Workspace_Allocate_or_fatal_error(
size_t size
)
{
49b02: 4e56 0000 linkw %fp,#0
49b06: 42a7 clrl %sp@-
49b08: 42a7 clrl %sp@-
49b0a: 2f2e 0008 movel %fp@(8),%sp@-
49b0e: 4879 0005 e556 pea 5e556 <_Workspace_Area>
49b14: 4eb9 0004 bb88 jsr 4bb88 <_Heap_Allocate_aligned_with_boundary>
__builtin_return_address( 1 ),
memory
);
#endif
if ( memory == NULL )
49b1a: 4fef 0010 lea %sp@(16),%sp
49b1e: 4a80 tstl %d0
49b20: 6704 beqs 49b26 <_Workspace_Allocate_or_fatal_error+0x24>
true,
INTERNAL_ERROR_WORKSPACE_ALLOCATION
);
return memory;
}
49b22: 4e5e unlk %fp
49b24: 4e75 rts
memory
);
#endif
if ( memory == NULL )
_Internal_error_Occurred(
49b26: 4878 0003 pea 3 <DIVIDE>
49b2a: 4878 0001 pea 1 <ADD>
49b2e: 42a7 clrl %sp@-
49b30: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
...
0004e20c <rtems_barrier_create>:
rtems_name name,
rtems_attribute attribute_set,
uint32_t maximum_waiters,
rtems_id *id
)
{
4e20c: 4e56 ffe8 linkw %fp,#-24
4e210: 202e 0010 movel %fp@(16),%d0
4e214: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@
4e218: 242e 0008 movel %fp@(8),%d2
4e21c: 262e 000c movel %fp@(12),%d3
4e220: 246e 0014 moveal %fp@(20),%a2
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
4e224: 4a82 tstl %d2
4e226: 677a beqs 4e2a2 <rtems_barrier_create+0x96> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
4e228: 4a8a tstl %a2
4e22a: 6700 00cc beqw 4e2f8 <rtems_barrier_create+0xec>
return RTEMS_INVALID_ADDRESS;
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
4e22e: 0803 0004 btst #4,%d3
4e232: 677a beqs 4e2ae <rtems_barrier_create+0xa2> <== NEVER TAKEN
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
4e234: 42ae fff8 clrl %fp@(-8)
if ( maximum_waiters == 0 )
4e238: 4a80 tstl %d0
4e23a: 6700 00b0 beqw 4e2ec <rtems_barrier_create+0xe0>
4e23e: 2239 0006 0e7c movel 60e7c <_Thread_Dispatch_disable_level>,%d1
4e244: 5281 addql #1,%d1
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
the_attributes.maximum_count = maximum_waiters;
4e246: 2d40 fffc movel %d0,%fp@(-4)
4e24a: 23c1 0006 0e7c movel %d1,60e7c <_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 );
4e250: 4879 0006 1070 pea 61070 <_Barrier_Information>
4e256: 4eb9 0004 9b44 jsr 49b44 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4e25c: 588f addql #4,%sp
4e25e: 2640 moveal %d0,%a3
4e260: 4a80 tstl %d0
4e262: 6776 beqs 4e2da <rtems_barrier_create+0xce> <== NEVER TAKEN
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_barrier->attribute_set = attribute_set;
4e264: 2743 0010 movel %d3,%a3@(16)
_CORE_barrier_Initialize( &the_barrier->Barrier, &the_attributes );
4e268: 486e fff8 pea %fp@(-8)
4e26c: 486b 0014 pea %a3@(20)
4e270: 4eb9 0004 eabc jsr 4eabc <_CORE_barrier_Initialize>
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4e276: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4e27a: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4e27c: 2079 0006 1088 moveal 61088 <_Barrier_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4e282: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4e284: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4e288: 2742 000c movel %d2,%a3@(12)
&_Barrier_Information,
&the_barrier->Object,
(Objects_Name) name
);
*id = the_barrier->Object.id;
4e28c: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
4e28e: 4eb9 0004 ab42 jsr 4ab42 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4e294: 508f addql #8,%sp
4e296: 4280 clrl %d0
}
4e298: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3
4e29e: 4e5e unlk %fp
4e2a0: 4e75 rts
{
Barrier_Control *the_barrier;
CORE_barrier_Attributes the_attributes;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4e2a2: 7003 moveq #3,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2a4: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e2aa: 4e5e unlk %fp <== NOT EXECUTED
4e2ac: 4e75 rts <== NOT EXECUTED
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
if ( maximum_waiters == 0 )
return RTEMS_INVALID_NUMBER;
} else
the_attributes.discipline = CORE_BARRIER_MANUAL_RELEASE;
4e2ae: 7201 moveq #1,%d1 <== NOT EXECUTED
4e2b0: 2d41 fff8 movel %d1,%fp@(-8) <== NOT EXECUTED
4e2b4: 2239 0006 0e7c movel 60e7c <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
4e2ba: 5281 addql #1,%d1 <== NOT EXECUTED
the_attributes.maximum_count = maximum_waiters;
4e2bc: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4e2c0: 23c1 0006 0e7c movel %d1,60e7c <_Thread_Dispatch_disable_level><== NOT EXECUTED
4e2c6: 4879 0006 1070 pea 61070 <_Barrier_Information> <== NOT EXECUTED
4e2cc: 4eb9 0004 9b44 jsr 49b44 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_barrier = _Barrier_Allocate();
if ( !the_barrier ) {
4e2d2: 588f addql #4,%sp <== NOT EXECUTED
4e2d4: 2640 moveal %d0,%a3 <== NOT EXECUTED
4e2d6: 4a80 tstl %d0 <== NOT EXECUTED
4e2d8: 668a bnes 4e264 <rtems_barrier_create+0x58> <== NOT EXECUTED
_Thread_Enable_dispatch();
4e2da: 4eb9 0004 ab42 jsr 4ab42 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4e2e0: 7005 moveq #5,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2e2: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e2e8: 4e5e unlk %fp <== NOT EXECUTED
4e2ea: 4e75 rts <== NOT EXECUTED
/* Initialize core barrier attributes */
if ( _Attributes_Is_barrier_automatic( attribute_set ) ) {
the_attributes.discipline = CORE_BARRIER_AUTOMATIC_RELEASE;
if ( maximum_waiters == 0 )
return RTEMS_INVALID_NUMBER;
4e2ec: 700a moveq #10,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2ee: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e2f4: 4e5e unlk %fp <== NOT EXECUTED
4e2f6: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4e2f8: 7009 moveq #9,%d0 <== NOT EXECUTED
*id = the_barrier->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4e2fa: 4cee 0c0c ffe8 moveml %fp@(-24),%d2-%d3/%a2-%a3 <== NOT EXECUTED
4e300: 4e5e unlk %fp <== NOT EXECUTED
0004e304 <rtems_barrier_delete>:
*/
rtems_status_code rtems_barrier_delete(
rtems_id id
)
{
4e304: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4e308: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4e30a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e30e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4e312: 4879 0006 1070 pea 61070 <_Barrier_Information> <== NOT EXECUTED
4e318: 4eb9 0004 a004 jsr 4a004 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4e31e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e322: 2440 moveal %d0,%a2 <== NOT EXECUTED
4e324: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e328: 6640 bnes 4e36a <rtems_barrier_delete+0x66> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Flush(
4e32a: 4878 0002 pea 2 <DOUBLE_FLOAT> <== NOT EXECUTED
4e32e: 42a7 clrl %sp@- <== NOT EXECUTED
4e330: 486a 0014 pea %a2@(20) <== NOT EXECUTED
4e334: 4eb9 0004 b27c jsr 4b27c <_Thread_queue_Flush> <== NOT EXECUTED
&the_barrier->Barrier,
NULL,
CORE_BARRIER_WAS_DELETED
);
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
4e33a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e33c: 4879 0006 1070 pea 61070 <_Barrier_Information> <== NOT EXECUTED
4e342: 4eb9 0004 9bd4 jsr 49bd4 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Barrier_Free (
Barrier_Control *the_barrier
)
{
_Objects_Free( &_Barrier_Information, &the_barrier->Object );
4e348: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e34a: 4879 0006 1070 pea 61070 <_Barrier_Information> <== NOT EXECUTED
4e350: 4eb9 0004 9e98 jsr 49e98 <_Objects_Free> <== NOT EXECUTED
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
4e356: 4eb9 0004 ab42 jsr 4ab42 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e35c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close( &_Barrier_Information, &the_barrier->Object );
_Barrier_Free( the_barrier );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4e360: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4e364: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e366: 4e5e unlk %fp <== NOT EXECUTED
4e368: 4e75 rts <== NOT EXECUTED
4e36a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4e36e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4e370: 4e5e unlk %fp <== NOT EXECUTED
00047344 <rtems_barrier_ident>:
rtems_status_code rtems_barrier_ident(
rtems_name name,
rtems_id *id
)
{
47344: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47348: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4734c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
47352: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47356: 4879 0006 022c pea 6022c <_Barrier_Information> <== NOT EXECUTED
4735c: 4eb9 0004 96ec jsr 496ec <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
47362: 41f9 0005 dd7e lea 5dd7e <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
47368: 4e5e unlk %fp <== NOT EXECUTED
4736a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
0004e3a4 <rtems_barrier_release>:
rtems_status_code rtems_barrier_release(
rtems_id id,
uint32_t *released
)
{
4e3a4: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4e3a8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4e3aa: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
4e3ae: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e3b0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
4e3b4: 4a8a tstl %a2 <== NOT EXECUTED
4e3b6: 6754 beqs 4e40c <rtems_barrier_release+0x68> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Barrier_Control *)
_Objects_Get( &_Barrier_Information, id, location );
4e3b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e3bc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e3be: 4879 0006 1070 pea 61070 <_Barrier_Information> <== NOT EXECUTED
4e3c4: 4eb9 0004 a004 jsr 4a004 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4e3ca: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e3ce: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e3d2: 662a bnes 4e3fe <rtems_barrier_release+0x5a> <== NOT EXECUTED
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
4e3d4: 42a7 clrl %sp@- <== NOT EXECUTED
4e3d6: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e3d8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e3da: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4e3de: 4eb9 0004 eaf8 jsr 4eaf8 <_CORE_barrier_Release> <== NOT EXECUTED
4e3e4: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
4e3e6: 4eb9 0004 ab42 jsr 4ab42 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e3ec: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
*released = _CORE_barrier_Release( &the_barrier->Barrier, id, NULL );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4e3f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e3f4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e3f6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e3fa: 4e5e unlk %fp <== NOT EXECUTED
4e3fc: 4e75 rts <== NOT EXECUTED
4e3fe: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4e402: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4e404: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e408: 4e5e unlk %fp <== NOT EXECUTED
4e40a: 4e75 rts <== NOT EXECUTED
4e40c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
{
Barrier_Control *the_barrier;
Objects_Locations location;
if ( !released )
return RTEMS_INVALID_ADDRESS;
4e410: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e412: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4e416: 4e5e unlk %fp <== NOT EXECUTED
...
0004e41c <rtems_barrier_wait>:
rtems_status_code rtems_barrier_wait(
rtems_id id,
rtems_interval timeout
)
{
4e41c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4e420: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e422: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4e426: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4e42a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e42c: 4879 0006 1070 pea 61070 <_Barrier_Information> <== NOT EXECUTED
4e432: 4eb9 0004 a004 jsr 4a004 <_Objects_Get> <== NOT EXECUTED
Barrier_Control *the_barrier;
Objects_Locations location;
the_barrier = _Barrier_Get( id, &location );
switch ( location ) {
4e438: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4e43c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4e440: 663a bnes 4e47c <rtems_barrier_wait+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_CORE_barrier_Wait(
4e442: 42a7 clrl %sp@- <== NOT EXECUTED
4e444: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4e448: 2040 moveal %d0,%a0 <== NOT EXECUTED
4e44a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4e44e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4e450: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4e454: 4eb9 0004 eb34 jsr 4eb34 <_CORE_barrier_Wait> <== NOT EXECUTED
id,
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
4e45a: 4eb9 0004 ab42 jsr 4ab42 <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Barrier_Translate_core_barrier_return_code(
_Thread_Executing->Wait.return_code );
4e460: 2079 0006 103c moveal 6103c <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4e466: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4e46a: 4eb9 0004 f5ec jsr 4f5ec <_Barrier_Translate_core_barrier_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e470: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
true,
timeout,
NULL
);
_Thread_Enable_dispatch();
return _Barrier_Translate_core_barrier_return_code(
4e474: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4e478: 4e5e unlk %fp <== NOT EXECUTED
4e47a: 4e75 rts <== NOT EXECUTED
4e47c: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4e480: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4e482: 4e5e unlk %fp <== NOT EXECUTED
...
00047e18 <rtems_build_id>:
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e18: 7218 moveq #24,%d1 <== NOT EXECUTED
uint32_t api,
uint32_t class,
uint32_t node,
uint32_t index
)
{
47e1a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47e1e: 202e 000c movel %fp@(12),%d0 <== NOT EXECUTED
47e22: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47e24: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47e28: e3aa lsll %d1,%d2 <== NOT EXECUTED
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e2a: 123c 001b moveb #27,%d1 <== NOT EXECUTED
47e2e: e3a8 lsll %d1,%d0 <== NOT EXECUTED
47e30: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
uint32_t the_class,
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
47e34: 8082 orl %d2,%d0 <== NOT EXECUTED
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
#if !defined(RTEMS_USE_16_BIT_OBJECT)
(( (Objects_Id) node ) << OBJECTS_NODE_START_BIT) |
47e36: 4841 swap %d1 <== NOT EXECUTED
47e38: 4241 clrw %d1 <== NOT EXECUTED
return _Objects_Build_id( api, class, node, index );
}
47e3a: 241f movel %sp@+,%d2 <== NOT EXECUTED
uint32_t node,
uint32_t index
)
{
return (( (Objects_Id) the_api ) << OBJECTS_API_START_BIT) |
(( (Objects_Id) the_class ) << OBJECTS_CLASS_START_BIT) |
47e3c: 80ae 0014 orl %fp@(20),%d0 <== NOT EXECUTED
47e40: 4e5e unlk %fp <== NOT EXECUTED
47e42: 8081 orl %d1,%d0 <== NOT EXECUTED
...
00047e48 <rtems_build_name>:
char C1,
char C2,
char C3,
char C4
)
{
47e48: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
47e4c: 102e 000f moveb %fp@(15),%d0 <== NOT EXECUTED
char C1,
char C2,
char C3,
char C4
)
{
47e50: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
return _Objects_Build_name( C1, C2, C3, C4 );
47e54: 142e 000b moveb %fp@(11),%d2 <== NOT EXECUTED
47e58: 122e 0013 moveb %fp@(19),%d1 <== NOT EXECUTED
47e5c: 7818 moveq #24,%d4 <== NOT EXECUTED
47e5e: 49c0 extbl %d0 <== NOT EXECUTED
47e60: 49c2 extbl %d2 <== NOT EXECUTED
47e62: 49c1 extbl %d1 <== NOT EXECUTED
47e64: e9aa lsll %d4,%d2 <== NOT EXECUTED
47e66: 4840 swap %d0 <== NOT EXECUTED
47e68: 4240 clrw %d0 <== NOT EXECUTED
47e6a: e189 lsll #8,%d1 <== NOT EXECUTED
47e6c: 162e 0017 moveb %fp@(23),%d3 <== NOT EXECUTED
47e70: 8082 orl %d2,%d0 <== NOT EXECUTED
47e72: 49c3 extbl %d3 <== NOT EXECUTED
47e74: 8081 orl %d1,%d0 <== NOT EXECUTED
}
47e76: 8083 orl %d3,%d0 <== NOT EXECUTED
47e78: 4cd7 001c moveml %sp@,%d2-%d4 <== NOT EXECUTED
47e7c: 4e5e unlk %fp <== NOT EXECUTED
00047030 <rtems_chain_append_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
47030: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47034: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47036: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
4703a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool rtems_chain_append_with_empty_check(
rtems_chain_control *chain,
rtems_chain_node *node
)
{
return _Chain_Append_with_empty_check( chain, node );
4703c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47040: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47044: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
47048: 4eb9 0004 759c jsr 4759c <_Chain_Append_with_empty_check> <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
4704e: 508f addql #8,%sp <== NOT EXECUTED
47050: 4a00 tstb %d0 <== NOT EXECUTED
47052: 660e bnes 47062 <rtems_chain_append_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47054: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47058: 4280 clrl %d0 <== NOT EXECUTED
4705a: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4705e: 4e5e unlk %fp <== NOT EXECUTED
47060: 4e75 rts <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
sc = rtems_event_send( task, events );
47062: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47066: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
sc = rtems_event_send( task, events );
4706a: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4706e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47072: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_append_with_empty_check( chain, node );
if ( was_empty ) {
sc = rtems_event_send( task, events );
47074: 4ef9 0004 6560 jmp 46560 <rtems_event_send> <== NOT EXECUTED
...
0004707c <rtems_chain_get_with_notification>:
rtems_chain_control *chain,
rtems_id task,
rtems_event_set events,
rtems_chain_node **node
)
{
4707c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47080: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47082: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
47086: 2f02 movel %d2,%sp@- <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool rtems_chain_get_with_empty_check(
rtems_chain_control *chain,
rtems_chain_node **node
)
{
return _Chain_Get_with_empty_check( chain, node );
47088: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
4708c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47090: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
47094: 4eb9 0004 763c jsr 4763c <_Chain_Get_with_empty_check> <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
4709a: 508f addql #8,%sp <== NOT EXECUTED
4709c: 4a00 tstb %d0 <== NOT EXECUTED
4709e: 660e bnes 470ae <rtems_chain_get_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
470a0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
470a4: 4280 clrl %d0 <== NOT EXECUTED
470a6: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
470aa: 4e5e unlk %fp <== NOT EXECUTED
470ac: 4e75 rts <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
sc = rtems_event_send( task, events );
470ae: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
470b2: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
sc = rtems_event_send( task, events );
470b6: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
470ba: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
470be: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool is_empty = rtems_chain_get_with_empty_check( chain, node );
if ( is_empty ) {
sc = rtems_event_send( task, events );
470c0: 4ef9 0004 6560 jmp 46560 <rtems_event_send> <== NOT EXECUTED
...
000470c8 <rtems_chain_get_with_wait>:
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
470c8: 4e56 ffe0 linkw %fp,#-32 <== NOT EXECUTED
470cc: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
) {
rtems_event_set out;
sc = rtems_event_receive(
470d0: 2c0e movel %fp,%d6 <== NOT EXECUTED
470d2: 45f9 0004 768c lea 4768c <_Chain_Get>,%a2 <== NOT EXECUTED
470d8: 5986 subql #4,%d6 <== NOT EXECUTED
470da: 47f9 0004 63b8 lea 463b8 <rtems_event_receive>,%a3 <== NOT EXECUTED
rtems_chain_control *chain,
rtems_event_set events,
rtems_interval timeout,
rtems_chain_node **node_ptr
)
{
470e0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
470e4: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
470e8: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(
rtems_chain_control *the_chain
)
{
return _Chain_Get( the_chain );
470ec: 2f03 movel %d3,%sp@- <== NOT EXECUTED
470ee: 4e92 jsr %a2@ <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
470f0: 588f addql #4,%sp <== NOT EXECUTED
470f2: 2400 movel %d0,%d2 <== NOT EXECUTED
470f4: 6622 bnes 47118 <rtems_chain_get_with_wait+0x50> <== NOT EXECUTED
) {
rtems_event_set out;
sc = rtems_event_receive(
470f6: 2f06 movel %d6,%sp@- <== NOT EXECUTED
470f8: 2f04 movel %d4,%sp@- <== NOT EXECUTED
470fa: 42a7 clrl %sp@- <== NOT EXECUTED
470fc: 2f05 movel %d5,%sp@- <== NOT EXECUTED
470fe: 4e93 jsr %a3@ <== NOT EXECUTED
)
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
47100: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47104: 4a80 tstl %d0 <== NOT EXECUTED
47106: 67e4 beqs 470ec <rtems_chain_get_with_wait+0x24> <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
47108: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
4710c: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
4710e: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
47114: 4e5e unlk %fp <== NOT EXECUTED
47116: 4e75 rts <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
47118: 206e 0014 moveal %fp@(20),%a0 <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
rtems_chain_node *node = NULL;
while (
sc == RTEMS_SUCCESSFUL
&& (node = rtems_chain_get( chain )) == NULL
4711c: 4280 clrl %d0 <== NOT EXECUTED
timeout,
&out
);
}
*node_ptr = node;
4711e: 2082 movel %d2,%a0@ <== NOT EXECUTED
return sc;
}
47120: 4cee 0c7c ffe0 moveml %fp@(-32),%d2-%d6/%a2-%a3 <== NOT EXECUTED
47126: 4e5e unlk %fp <== NOT EXECUTED
...
0004712c <rtems_chain_prepend_with_notification>:
rtems_chain_control *chain,
rtems_chain_node *node,
rtems_id task,
rtems_event_set events
)
{
4712c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47130: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47132: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
47136: 2f02 movel %d2,%sp@- <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool rtems_chain_prepend_with_empty_check(
rtems_chain_control *chain,
rtems_chain_node *node
)
{
return _Chain_Prepend_with_empty_check( chain, node );
47138: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4713c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47140: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
47144: 4eb9 0004 76f8 jsr 476f8 <_Chain_Prepend_with_empty_check> <== NOT EXECUTED
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
4714a: 508f addql #8,%sp <== NOT EXECUTED
4714c: 4a00 tstb %d0 <== NOT EXECUTED
4714e: 660e bnes 4715e <rtems_chain_prepend_with_notification+0x32><== NOT EXECUTED
sc = rtems_event_send( task, events );
}
return sc;
}
47150: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47154: 4280 clrl %d0 <== NOT EXECUTED
47156: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
4715a: 4e5e unlk %fp <== NOT EXECUTED
4715c: 4e75 rts <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
sc = rtems_event_send( task, events );
4715e: 2d43 000c movel %d3,%fp@(12) <== NOT EXECUTED
}
return sc;
}
47162: 262e fffc movel %fp@(-4),%d3 <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
sc = rtems_event_send( task, events );
47166: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
return sc;
}
4716a: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
4716e: 4e5e unlk %fp <== NOT EXECUTED
{
rtems_status_code sc = RTEMS_SUCCESSFUL;
bool was_empty = rtems_chain_prepend_with_empty_check( chain, node );
if (was_empty) {
sc = rtems_event_send( task, events );
47170: 4ef9 0004 6560 jmp 46560 <rtems_event_send> <== NOT EXECUTED
...
000557b8 <rtems_clock_get>:
rtems_status_code rtems_clock_get(
rtems_clock_get_options option,
void *time_buffer
)
{
557b8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
557bc: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
557c0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
557c2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
if ( !time_buffer )
557c6: 4a8a tstl %a2 <== NOT EXECUTED
557c8: 6748 beqs 55812 <rtems_clock_get+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
557ca: 4a80 tstl %d0 <== NOT EXECUTED
557cc: 6734 beqs 55802 <rtems_clock_get+0x4a> <== NOT EXECUTED
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
557ce: 7201 moveq #1,%d1 <== NOT EXECUTED
557d0: b280 cmpl %d0,%d1 <== NOT EXECUTED
557d2: 674a beqs 5581e <rtems_clock_get+0x66> <== NOT EXECUTED
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
557d4: 7202 moveq #2,%d1 <== NOT EXECUTED
557d6: b280 cmpl %d0,%d1 <== NOT EXECUTED
557d8: 6754 beqs 5582e <rtems_clock_get+0x76> <== NOT EXECUTED
*interval = rtems_clock_get_ticks_since_boot();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
557da: 7203 moveq #3,%d1 <== NOT EXECUTED
557dc: b280 cmpl %d0,%d1 <== NOT EXECUTED
557de: 6762 beqs 55842 <rtems_clock_get+0x8a> <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
557e0: 7204 moveq #4,%d1 <== NOT EXECUTED
557e2: b280 cmpl %d0,%d1 <== NOT EXECUTED
557e4: 670c beqs 557f2 <rtems_clock_get+0x3a> <== NOT EXECUTED
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
557e6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
557ea: 720a moveq #10,%d1 <== NOT EXECUTED
}
557ec: 2001 movel %d1,%d0 <== NOT EXECUTED
557ee: 4e5e unlk %fp <== NOT EXECUTED
557f0: 4e75 rts <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
557f2: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
}
557f6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
557fa: 4e5e unlk %fp <== NOT EXECUTED
*interval = rtems_clock_get_ticks_per_second();
return RTEMS_SUCCESSFUL;
}
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
557fc: 4ef9 0005 5970 jmp 55970 <rtems_clock_get_tod_timeval> <== NOT EXECUTED
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
55802: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55806: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5580a: 4e5e unlk %fp <== NOT EXECUTED
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
5580c: 4ef9 0005 58ac jmp 558ac <rtems_clock_get_tod> <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55812: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
rtems_clock_get_options option,
void *time_buffer
)
{
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
55816: 7209 moveq #9,%d1 <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55818: 2001 movel %d1,%d0 <== NOT EXECUTED
5581a: 4e5e unlk %fp <== NOT EXECUTED
5581c: 4e75 rts <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
5581e: 2d4a 0008 movel %a2,%fp@(8) <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55822: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
55826: 4e5e unlk %fp <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TOD )
return rtems_clock_get_tod( (rtems_time_of_day *)time_buffer );
if ( option == RTEMS_CLOCK_GET_SECONDS_SINCE_EPOCH )
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
55828: 4ef9 0005 5858 jmp 55858 <rtems_clock_get_seconds_since_epoch><== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_since_boot();
5582e: 4eb9 0005 589c jsr 5589c <rtems_clock_get_ticks_since_boot><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55834: 4281 clrl %d1 <== NOT EXECUTED
return rtems_clock_get_seconds_since_epoch((rtems_interval *)time_buffer);
if ( option == RTEMS_CLOCK_GET_TICKS_SINCE_BOOT ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_since_boot();
55836: 2480 movel %d0,%a2@ <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
55838: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
5583c: 2001 movel %d1,%d0 <== NOT EXECUTED
5583e: 4e5e unlk %fp <== NOT EXECUTED
55840: 4e75 rts <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_per_second();
55842: 4eb9 0005 5884 jsr 55884 <rtems_clock_get_ticks_per_second><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55848: 4281 clrl %d1 <== NOT EXECUTED
}
if ( option == RTEMS_CLOCK_GET_TICKS_PER_SECOND ) {
rtems_interval *interval = (rtems_interval *)time_buffer;
*interval = rtems_clock_get_ticks_per_second();
5584a: 2480 movel %d0,%a2@ <== NOT EXECUTED
if ( option == RTEMS_CLOCK_GET_TIME_VALUE )
return rtems_clock_get_tod_timeval( (struct timeval *)time_buffer );
return RTEMS_INVALID_NUMBER;
}
5584c: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
55850: 2001 movel %d1,%d0 <== NOT EXECUTED
55852: 4e5e unlk %fp <== NOT EXECUTED
...
00047078 <rtems_clock_get_seconds_since_epoch>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
47078: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4707c: 206e 0008 moveal %fp@(8),%a0 <== NOT EXECUTED
if ( !the_interval )
47080: 4a88 tstl %a0 <== NOT EXECUTED
47082: 671a beqs 4709e <rtems_clock_get_seconds_since_epoch+0x26><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
47084: 4a39 0006 8ad8 tstb 68ad8 <_TOD_Is_set> <== NOT EXECUTED
4708a: 670c beqs 47098 <rtems_clock_get_seconds_since_epoch+0x20><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
4708c: 20b9 0006 8b72 movel 68b72 <_TOD_Now>,%a0@ <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47092: 4280 clrl %d0 <== NOT EXECUTED
}
47094: 4e5e unlk %fp <== NOT EXECUTED
47096: 4e75 rts <== NOT EXECUTED
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47098: 700b moveq #11,%d0 <== NOT EXECUTED
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
4709a: 4e5e unlk %fp <== NOT EXECUTED
4709c: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_seconds_since_epoch(
rtems_interval *the_interval
)
{
if ( !the_interval )
return RTEMS_INVALID_ADDRESS;
4709e: 7009 moveq #9,%d0 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
*the_interval = _TOD_Seconds_since_epoch();
return RTEMS_SUCCESSFUL;
}
470a0: 4e5e unlk %fp <== NOT EXECUTED
00045d3c <rtems_clock_get_ticks_per_second>:
rtems_interval rtems_clock_get_ticks_per_second(void)
{
return TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
}
45d3c: 41f9 0005 cd20 lea 5cd20 <Configuration+0xc>,%a0 <== NOT EXECUTED
#include <rtems/score/thread.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
rtems_interval rtems_clock_get_ticks_per_second(void)
{
45d42: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return TOD_MICROSECONDS_PER_SECOND /
rtems_configuration_get_microseconds_per_tick();
}
45d46: 203c 000f 4240 movel #1000000,%d0 <== NOT EXECUTED
45d4c: 4e5e unlk %fp <== NOT EXECUTED
45d4e: 4c50 0000 remul %a0@,%d0,%d0 <== NOT EXECUTED
00045d54 <rtems_clock_get_ticks_since_boot>:
#include <rtems/score/thread.h>
#include <rtems/score/tod.h>
#include <rtems/score/watchdog.h>
rtems_interval rtems_clock_get_ticks_since_boot(void)
{
45d54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Watchdog_Ticks_since_boot;
45d58: 2039 0005 e660 movel 5e660 <_Watchdog_Ticks_since_boot>,%d0<== NOT EXECUTED
}
45d5e: 4e5e unlk %fp <== NOT EXECUTED
...
000470cc <rtems_clock_get_tod>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod(
rtems_time_of_day *time_buffer
)
{
470cc: 4e56 ffcc linkw %fp,#-52 <== NOT EXECUTED
470d0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
470d2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
470d6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
470d8: 4a8a tstl %a2 <== NOT EXECUTED
470da: 6700 00a6 beqw 47182 <rtems_clock_get_tod+0xb6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
470de: 4a39 0006 8ad8 tstb 68ad8 <_TOD_Is_set> <== NOT EXECUTED
470e4: 660e bnes 470f4 <rtems_clock_get_tod+0x28> <== NOT EXECUTED
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
470e6: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
470ea: 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;
}
470ec: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
470f0: 4e5e unlk %fp <== NOT EXECUTED
470f2: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
470f4: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
470fa: 40c2 movew %sr,%d2 <== NOT EXECUTED
470fc: 8082 orl %d2,%d0 <== NOT EXECUTED
470fe: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
47100: 486e fff0 pea %fp@(-16) <== NOT EXECUTED
47104: 4eb9 0004 8bb0 jsr 48bb0 <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
4710a: 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;
4710c: 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 );
47112: 486e ffcc pea %fp@(-52) <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
47116: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4711a: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
4711e: 2d6e fff0 fff8 movel %fp@(-16),%fp@(-8) <== NOT EXECUTED
time->tv_usec = useconds;
47124: 4c42 0800 remsl %d2,%d0,%d0 <== NOT EXECUTED
47128: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
4712c: 4eb9 0004 fbd8 jsr 4fbd8 <gmtime_r> <== NOT EXECUTED
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
47132: 206e ffdc moveal %fp@(-36),%a0 <== NOT EXECUTED
47136: 5288 addql #1,%a0 <== NOT EXECUTED
tmbuf->minute = time.tm_min;
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
47138: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4713c: 4280 clrl %d0 <== NOT EXECUTED
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
4713e: 2548 0004 movel %a0,%a2@(4) <== NOT EXECUTED
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
47142: 206e ffe0 moveal %fp@(-32),%a0 <== NOT EXECUTED
47146: 41e8 076c lea %a0@(1900),%a0 <== NOT EXECUTED
tmbuf->month = time.tm_mon + 1;
tmbuf->day = time.tm_mday;
tmbuf->hour = time.tm_hour;
tmbuf->minute = time.tm_min;
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
4714a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
/* Split it into a closer format */
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
4714e: 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 /
47150: 41f9 0005 f4e0 lea 5f4e0 <Configuration+0xc>,%a0 <== NOT EXECUTED
47156: 4c50 2002 remul %a0@,%d2,%d2 <== NOT EXECUTED
gmtime_r( &now.tv_sec, &time );
/* Now adjust it to the RTEMS format */
tmbuf->year = time.tm_year + 1900;
tmbuf->month = time.tm_mon + 1;
tmbuf->day = time.tm_mday;
4715a: 256e ffd8 0008 movel %fp@(-40),%a2@(8) <== NOT EXECUTED
tmbuf->hour = time.tm_hour;
47160: 256e ffd4 000c movel %fp@(-44),%a2@(12) <== NOT EXECUTED
tmbuf->minute = time.tm_min;
47166: 256e ffd0 0010 movel %fp@(-48),%a2@(16) <== NOT EXECUTED
tmbuf->second = time.tm_sec;
4716c: 256e ffcc 0014 movel %fp@(-52),%a2@(20) <== NOT EXECUTED
tmbuf->ticks = now.tv_usec /
47172: 2542 0018 movel %d2,%a2@(24) <== NOT EXECUTED
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
47176: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
4717a: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
4717e: 4e5e unlk %fp <== NOT EXECUTED
47180: 4e75 rts <== NOT EXECUTED
47182: 242e ffc4 movel %fp@(-60),%d2 <== NOT EXECUTED
rtems_time_of_day *tmbuf = time_buffer;
struct tm time;
struct timeval now;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47186: 7009 moveq #9,%d0 <== NOT EXECUTED
tmbuf->second = time.tm_sec;
tmbuf->ticks = now.tv_usec /
rtems_configuration_get_microseconds_per_tick();
return RTEMS_SUCCESSFUL;
}
47188: 246e ffc8 moveal %fp@(-56),%a2 <== NOT EXECUTED
4718c: 4e5e unlk %fp <== NOT EXECUTED
00055970 <rtems_clock_get_tod_timeval>:
#include <rtems/score/watchdog.h>
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
55970: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
55974: 48d7 040c moveml %d2-%d3/%a2,%sp@ <== NOT EXECUTED
55978: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
if ( !time )
5597c: 4a8a tstl %a2 <== NOT EXECUTED
5597e: 6750 beqs 559d0 <rtems_clock_get_tod_timeval+0x60><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Is_set )
55980: 4a39 0007 d244 tstb 7d244 <_TOD_Is_set> <== NOT EXECUTED
55986: 660c bnes 55994 <rtems_clock_get_tod_timeval+0x24><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
55988: 700b moveq #11,%d0 <== NOT EXECUTED
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
5598a: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
55990: 4e5e unlk %fp <== NOT EXECUTED
55992: 4e75 rts <== NOT EXECUTED
{
ISR_Level level;
struct timespec now;
suseconds_t useconds;
_ISR_Disable(level);
55994: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
5599a: 40c2 movew %sr,%d2 <== NOT EXECUTED
5599c: 8082 orl %d2,%d0 <== NOT EXECUTED
5599e: 46c0 movew %d0,%sr <== NOT EXECUTED
_TOD_Get( &now );
559a0: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
559a4: 4eb9 0005 a49c jsr 5a49c <_TOD_Get> <== NOT EXECUTED
_ISR_Enable(level);
559aa: 46c2 movew %d2,%sr <== NOT EXECUTED
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
559ac: 263c 0000 03e8 movel #1000,%d3 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
559b2: 588f addql #4,%sp <== NOT EXECUTED
559b4: 4280 clrl %d0 <== NOT EXECUTED
_ISR_Disable(level);
_TOD_Get( &now );
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
559b6: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
time->tv_usec = useconds;
559ba: 4c43 1801 remsl %d3,%d1,%d1 <== NOT EXECUTED
_ISR_Enable(level);
useconds = (suseconds_t)now.tv_nsec;
useconds /= (suseconds_t)TOD_NANOSECONDS_PER_MICROSECOND;
time->tv_sec = now.tv_sec;
559be: 24ae fff8 movel %fp@(-8),%a2@ <== NOT EXECUTED
time->tv_usec = useconds;
559c2: 2541 0004 movel %d1,%a2@(4) <== NOT EXECUTED
}
559c6: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
559cc: 4e5e unlk %fp <== NOT EXECUTED
559ce: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_tod_timeval(
struct timeval *time
)
{
if ( !time )
return RTEMS_INVALID_ADDRESS;
559d0: 7009 moveq #9,%d0 <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
_TOD_Get_timeval( time );
return RTEMS_SUCCESSFUL;
}
559d2: 4cee 040c ffec moveml %fp@(-20),%d2-%d3/%a2 <== NOT EXECUTED
559d8: 4e5e unlk %fp <== NOT EXECUTED
00045f58 <rtems_clock_get_uptime>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
45f58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
45f5c: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( !uptime )
45f60: 6710 beqs 45f72 <rtems_clock_get_uptime+0x1a> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_TOD_Get_uptime_as_timespec( uptime );
45f62: 2f00 movel %d0,%sp@- <== NOT EXECUTED
45f64: 4eb9 0004 7798 jsr 47798 <_TOD_Get_uptime_as_timespec> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
45f6a: 588f addql #4,%sp <== NOT EXECUTED
45f6c: 4280 clrl %d0 <== NOT EXECUTED
}
45f6e: 4e5e unlk %fp <== NOT EXECUTED
45f70: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_clock_get_uptime(
struct timespec *uptime
)
{
if ( !uptime )
return RTEMS_INVALID_ADDRESS;
45f72: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Get_uptime_as_timespec( uptime );
return RTEMS_SUCCESSFUL;
}
45f74: 4e5e unlk %fp <== NOT EXECUTED
000471ac <rtems_clock_set>:
*/
rtems_status_code rtems_clock_set(
rtems_time_of_day *time_buffer
)
{
471ac: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
471b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471b2: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
471b6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
struct timespec newtime;
if ( !time_buffer )
471b8: 4a8a tstl %a2 <== NOT EXECUTED
471ba: 6772 beqs 4722e <rtems_clock_set+0x82> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
471bc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471be: 4eb9 0004 7384 jsr 47384 <_TOD_Validate> <== NOT EXECUTED
471c4: 588f addql #4,%sp <== NOT EXECUTED
471c6: 4a00 tstb %d0 <== NOT EXECUTED
471c8: 660e bnes 471d8 <rtems_clock_set+0x2c> <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
471ca: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
471ce: 7014 moveq #20,%d0 <== NOT EXECUTED
}
471d0: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
471d4: 4e5e unlk %fp <== NOT EXECUTED
471d6: 4e75 rts <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
471d8: 2f0a movel %a2,%sp@- <== NOT EXECUTED
471da: 4eb9 0004 727c jsr 4727c <_TOD_To_seconds> <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471e0: 242a 0018 movel %a2@(24),%d2 <== NOT EXECUTED
471e4: 41f9 0005 f4e0 lea 5f4e0 <Configuration+0xc>,%a0 <== NOT EXECUTED
471ea: 4c10 2800 mulsl %a0@,%d2 <== NOT EXECUTED
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
if ( _TOD_Validate( time_buffer ) ) {
newtime.tv_sec = _TOD_To_seconds( time_buffer );
471ee: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
newtime.tv_nsec = time_buffer->ticks *
471f2: 203c 0000 03e8 movel #1000,%d0 <== NOT EXECUTED
471f8: 4c02 0800 mulsl %d2,%d0 <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471fc: 2239 0006 8ac8 movel 68ac8 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
47202: 5281 addql #1,%d1 <== NOT EXECUTED
47204: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
47208: 23c1 0006 8ac8 movel %d1,68ac8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
4720e: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
47212: 4eb9 0004 8d18 jsr 48d18 <_TOD_Set> <== NOT EXECUTED
_Thread_Enable_dispatch();
47218: 4eb9 0004 a3b6 jsr 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
4721e: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
rtems_configuration_get_nanoseconds_per_tick();
_Thread_Disable_dispatch();
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47222: 508f addql #8,%sp <== NOT EXECUTED
47224: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_INVALID_CLOCK;
}
47226: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
4722a: 4e5e unlk %fp <== NOT EXECUTED
4722c: 4e75 rts <== NOT EXECUTED
4722e: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
)
{
struct timespec newtime;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47232: 7009 moveq #9,%d0 <== NOT EXECUTED
_TOD_Set( &newtime );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_INVALID_CLOCK;
}
47234: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
47238: 4e5e unlk %fp <== NOT EXECUTED
00045d64 <rtems_clock_set_nanoseconds_extension>:
* error code - if unsuccessful
*/
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
45d64: 4e56 0000 linkw %fp,#0
45d68: 202e 0008 movel %fp@(8),%d0
if ( !routine )
45d6c: 670c beqs 45d7a <rtems_clock_set_nanoseconds_extension+0x16><== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_Watchdog_Nanoseconds_since_tick_handler = routine;
45d6e: 23c0 0005 e6a4 movel %d0,5e6a4 <_Watchdog_Nanoseconds_since_tick_handler>
return RTEMS_SUCCESSFUL;
45d74: 4280 clrl %d0
}
45d76: 4e5e unlk %fp
45d78: 4e75 rts
rtems_status_code rtems_clock_set_nanoseconds_extension(
rtems_nanoseconds_extension_routine routine
)
{
if ( !routine )
return RTEMS_INVALID_ADDRESS;
45d7a: 7009 moveq #9,%d0 <== NOT EXECUTED
_Watchdog_Nanoseconds_since_tick_handler = routine;
return RTEMS_SUCCESSFUL;
}
45d7c: 4e5e unlk %fp <== NOT EXECUTED
00045d80 <rtems_clock_tick>:
*
* NOTE: This routine only works for leap-years through 2099.
*/
rtems_status_code rtems_clock_tick( void )
{
45d80: 4e56 0000 linkw %fp,#0
_TOD_Tickle_ticks();
45d84: 4eb9 0004 73dc jsr 473dc <_TOD_Tickle_ticks>
*/
RTEMS_INLINE_ROUTINE void _Watchdog_Tickle_ticks( void )
{
_Watchdog_Tickle( &_Watchdog_Ticks_chain );
45d8a: 4879 0005 e618 pea 5e618 <_Watchdog_Ticks_chain> <== NOT EXECUTED
45d90: 4eb9 0004 99ec jsr 499ec <_Watchdog_Tickle> <== NOT EXECUTED
_Watchdog_Tickle_ticks();
_Thread_Tickle_timeslice();
45d96: 4eb9 0004 945c jsr 4945c <_Thread_Tickle_timeslice> <== NOT EXECUTED
if ( _Thread_Is_context_switch_necessary() &&
45d9c: 588f addql #4,%sp <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_context_switch_necessary( void )
{
return ( _Thread_Dispatch_necessary );
45d9e: 1039 0005 e704 moveb 5e704 <_Per_CPU_Information+0x18>,%d0 <== NOT EXECUTED
45da4: 6708 beqs 45dae <rtems_clock_tick+0x2e> <== NOT EXECUTED
* otherwise.
*/
RTEMS_INLINE_ROUTINE bool _Thread_Is_dispatching_enabled( void )
{
return ( _Thread_Dispatch_disable_level == 0 );
45da6: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
45dac: 6706 beqs 45db4 <rtems_clock_tick+0x34> <== NOT EXECUTED
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
return RTEMS_SUCCESSFUL;
}
45dae: 4280 clrl %d0 <== NOT EXECUTED
45db0: 4e5e unlk %fp <== NOT EXECUTED
45db2: 4e75 rts <== NOT EXECUTED
_Thread_Tickle_timeslice();
if ( _Thread_Is_context_switch_necessary() &&
_Thread_Is_dispatching_enabled() )
_Thread_Dispatch();
45db4: 4eb9 0004 87b0 jsr 487b0 <_Thread_Dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
45dba: 4280 clrl %d0 <== NOT EXECUTED
45dbc: 4e5e unlk %fp <== NOT EXECUTED
0004b8c0 <rtems_debug_disable>:
* rtems_debug_disable
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
4b8c0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level &= ~to_be_disabled;
4b8c4: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4b8c8: 4680 notl %d0 <== NOT EXECUTED
}
4b8ca: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_disable (
rtems_debug_control to_be_disabled
)
{
_Debug_Level &= ~to_be_disabled;
4b8cc: c1b9 0005 e600 andl %d0,5e600 <_Debug_Level> <== NOT EXECUTED
}
0004b8ae <rtems_debug_enable>:
* rtems_debug_enable
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
4b8ae: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_Debug_Level |= to_be_enabled;
4b8b2: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4b8b6: 4e5e unlk %fp <== NOT EXECUTED
*/
void rtems_debug_enable (
rtems_debug_control to_be_enabled
)
{
_Debug_Level |= to_be_enabled;
4b8b8: 81b9 0005 e600 orl %d0,5e600 <_Debug_Level> <== NOT EXECUTED
}
0004b8d4 <rtems_debug_is_enabled>:
* rtems_debug_is_enabled
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
4b8d4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return (_Debug_Level & level) ? true : false;
4b8d8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
}
4b8dc: 4e5e unlk %fp <== NOT EXECUTED
*/
bool rtems_debug_is_enabled(
rtems_debug_control level
)
{
return (_Debug_Level & level) ? true : false;
4b8de: c0b9 0005 e600 andl 5e600 <_Debug_Level>,%d0 <== NOT EXECUTED
4b8e4: 56c0 sne %d0 <== NOT EXECUTED
}
4b8e6: 4480 negl %d0 <== NOT EXECUTED
...
00045dc0 <rtems_event_receive>:
rtems_event_set event_in,
rtems_option option_set,
rtems_interval ticks,
rtems_event_set *event_out
)
{
45dc0: 4e56 0000 linkw %fp,#0
45dc4: 202e 0008 movel %fp@(8),%d0
45dc8: 206e 0014 moveal %fp@(20),%a0
RTEMS_API_Control *api;
if ( !event_out )
45dcc: 4a88 tstl %a0
45dce: 674c beqs 45e1c <rtems_event_receive+0x5c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
45dd0: 2279 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a1
45dd6: 2269 00fc moveal %a1@(252),%a1
if ( _Event_sets_Is_empty( event_in ) ) {
45dda: 4a80 tstl %d0
45ddc: 6606 bnes 45de4 <rtems_event_receive+0x24> <== ALWAYS TAKEN
*event_out = api->pending_events;
45dde: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
}
45de0: 4e5e unlk %fp <== NOT EXECUTED
45de2: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
45de4: 2239 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d1
45dea: 5281 addql #1,%d1
45dec: 23c1 0005 e538 movel %d1,5e538 <_Thread_Dispatch_disable_level>
*event_out = api->pending_events;
return RTEMS_SUCCESSFUL;
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
45df2: 2f08 movel %a0,%sp@-
45df4: 2f2e 0010 movel %fp@(16),%sp@-
45df8: 2f2e 000c movel %fp@(12),%sp@-
45dfc: 2f00 movel %d0,%sp@-
45dfe: 4eb9 0004 5e24 jsr 45e24 <_Event_Seize>
_Thread_Enable_dispatch();
45e04: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return( _Thread_Executing->Wait.return_code );
45e0a: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
45e10: 4fef 0010 lea %sp@(16),%sp
}
45e14: 4e5e unlk %fp
}
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
45e16: 2028 0034 movel %a0@(52),%d0
}
45e1a: 4e75 rts
)
{
RTEMS_API_Control *api;
if ( !event_out )
return RTEMS_INVALID_ADDRESS;
45e1c: 7009 moveq #9,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Event_Seize( event_in, option_set, ticks, event_out );
_Thread_Enable_dispatch();
return( _Thread_Executing->Wait.return_code );
}
45e1e: 4e5e unlk %fp <== NOT EXECUTED
...
00045f68 <rtems_event_send>:
rtems_status_code rtems_event_send(
rtems_id id,
rtems_event_set event_in
)
{
45f68: 4e56 fffc linkw %fp,#-4
45f6c: 2f02 movel %d2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
the_thread = _Thread_Get( id, &location );
45f6e: 486e fffc pea %fp@(-4)
45f72: 2f2e 0008 movel %fp@(8),%sp@-
45f76: 4eb9 0004 8940 jsr 48940 <_Thread_Get>
switch ( location ) {
45f7c: 508f addql #8,%sp
45f7e: 4aae fffc tstl %fp@(-4)
45f82: 6634 bnes 45fb8 <rtems_event_send+0x50> <== NEVER TAKEN
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
45f84: 2240 moveal %d0,%a1
rtems_event_set *the_event_set
)
{
ISR_Level level;
_ISR_Disable( level );
45f86: 223c 0000 0700 movel #1792,%d1
45f8c: 2069 00fc moveal %a1@(252),%a0
45f90: 40c2 movew %sr,%d2
45f92: 8282 orl %d2,%d1
45f94: 46c1 movew %d1,%sr
*the_event_set |= the_new_events;
45f96: 222e 000c movel %fp@(12),%d1
45f9a: 8390 orl %d1,%a0@
_ISR_Enable( level );
45f9c: 46c2 movew %d2,%sr
_Event_sets_Post( event_in, &api->pending_events );
_Event_Surrender( the_thread );
45f9e: 2f00 movel %d0,%sp@-
45fa0: 4eb9 0004 5fc4 jsr 45fc4 <_Event_Surrender>
_Thread_Enable_dispatch();
45fa6: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45fac: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
_Event_sets_Post( event_in, &api->pending_events );
_Event_Surrender( the_thread );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
45fb0: 588f addql #4,%sp
45fb2: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
45fb4: 4e5e unlk %fp
45fb6: 4e75 rts
45fb8: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
45fbc: 7004 moveq #4,%d0 <== NOT EXECUTED
}
45fbe: 4e5e unlk %fp <== NOT EXECUTED
...
00048378 <rtems_extension_create>:
rtems_status_code rtems_extension_create(
rtems_name name,
const rtems_extensions_table *extension_table,
rtems_id *id
)
{
48378: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
4837c: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
48380: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
48384: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
Extension_Control *the_extension;
if ( !id )
48388: 4a8a tstl %a2 <== NOT EXECUTED
4838a: 6700 00a0 beqw 4842c <rtems_extension_create+0xb4> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
4838e: 4a82 tstl %d2 <== NOT EXECUTED
48390: 660c bnes 4839e <rtems_extension_create+0x26> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
48392: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48394: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4839a: 4e5e unlk %fp <== NOT EXECUTED
4839c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4839e: 2039 0006 8ac8 movel 68ac8 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
483a4: 5280 addql #1,%d0 <== NOT EXECUTED
483a6: 23c0 0006 8ac8 movel %d0,68ac8 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#ifndef __EXTENSION_MANAGER_inl
#define __EXTENSION_MANAGER_inl
RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void )
{
return (Extension_Control *) _Objects_Allocate( &_Extension_Information );
483ac: 4879 0006 8c50 pea 68c50 <_Extension_Information> <== NOT EXECUTED
483b2: 4eb9 0004 92fc jsr 492fc <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
483b8: 588f addql #4,%sp <== NOT EXECUTED
483ba: 2640 moveal %d0,%a3 <== NOT EXECUTED
483bc: 4a80 tstl %d0 <== NOT EXECUTED
483be: 675a beqs 4841a <rtems_extension_create+0xa2> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(
User_extensions_Control *extension,
const User_extensions_Table *extension_table
)
{
extension->Callouts = *extension_table;
483c0: 206e 000c moveal %fp@(12),%a0 <== NOT EXECUTED
483c4: 2758 0024 movel %a0@+,%a3@(36) <== NOT EXECUTED
483c8: 2758 0028 movel %a0@+,%a3@(40) <== NOT EXECUTED
483cc: 2758 002c movel %a0@+,%a3@(44) <== NOT EXECUTED
483d0: 2758 0030 movel %a0@+,%a3@(48) <== NOT EXECUTED
483d4: 2758 0034 movel %a0@+,%a3@(52) <== NOT EXECUTED
483d8: 2758 0038 movel %a0@+,%a3@(56) <== NOT EXECUTED
483dc: 2758 003c movel %a0@+,%a3@(60) <== NOT EXECUTED
483e0: 2750 0040 movel %a0@,%a3@(64) <== NOT EXECUTED
_User_extensions_Add_set( extension );
483e4: 486b 0010 pea %a3@(16) <== NOT EXECUTED
483e8: 4eb9 0004 b11c jsr 4b11c <_User_extensions_Add_set> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
483ee: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483f2: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483f4: 2079 0006 8c68 moveal 68c68 <_Extension_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
483fa: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
483fc: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
48400: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Extension_Information,
&the_extension->Object,
(Objects_Name) name
);
*id = the_extension->Object.id;
48404: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48406: 4eb9 0004 a3b6 jsr 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4840c: 588f addql #4,%sp <== NOT EXECUTED
4840e: 4280 clrl %d0 <== NOT EXECUTED
}
48410: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48416: 4e5e unlk %fp <== NOT EXECUTED
48418: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_extension = _Extension_Allocate();
if ( !the_extension ) {
_Thread_Enable_dispatch();
4841a: 4eb9 0004 a3b6 jsr 4a3b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
48420: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
48422: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48428: 4e5e unlk %fp <== NOT EXECUTED
4842a: 4e75 rts <== NOT EXECUTED
)
{
Extension_Control *the_extension;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4842c: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_extension->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4842e: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
48434: 4e5e unlk %fp <== NOT EXECUTED
0004821c <rtems_extension_delete>:
#include <rtems/extension.h>
rtems_status_code rtems_extension_delete(
rtems_id id
)
{
4821c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48220: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Extension_Control *)
_Objects_Get( &_Extension_Information, id, location );
48222: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48226: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4822a: 4879 0006 85b0 pea 685b0 <_Extension_Information> <== NOT EXECUTED
48230: 4eb9 0004 9514 jsr 49514 <_Objects_Get> <== NOT EXECUTED
Extension_Control *the_extension;
Objects_Locations location;
the_extension = _Extension_Get( id, &location );
switch ( location ) {
48236: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4823a: 2440 moveal %d0,%a2 <== NOT EXECUTED
4823c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48240: 663a bnes 4827c <rtems_extension_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
48242: 486a 0010 pea %a2@(16) <== NOT EXECUTED
48246: 4eb9 0004 adac jsr 4adac <_User_extensions_Remove_set> <== NOT EXECUTED
_Objects_Close( &_Extension_Information, &the_extension->Object );
4824c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4824e: 4879 0006 85b0 pea 685b0 <_Extension_Information> <== NOT EXECUTED
48254: 4eb9 0004 90e4 jsr 490e4 <_Objects_Close> <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Extension_Free (
Extension_Control *the_extension
)
{
_Objects_Free( &_Extension_Information, &the_extension->Object );
4825a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4825c: 4879 0006 85b0 pea 685b0 <_Extension_Information> <== NOT EXECUTED
48262: 4eb9 0004 93a8 jsr 493a8 <_Objects_Free> <== NOT EXECUTED
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
48268: 4eb9 0004 a022 jsr 4a022 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4826e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
_User_extensions_Remove_set( &the_extension->Extension );
_Objects_Close( &_Extension_Information, &the_extension->Object );
_Extension_Free( the_extension );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
48272: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
48276: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48278: 4e5e unlk %fp <== NOT EXECUTED
4827a: 4e75 rts <== NOT EXECUTED
4827c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48280: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48282: 4e5e unlk %fp <== NOT EXECUTED
...
00049318 <rtems_extension_ident>:
rtems_status_code rtems_extension_ident(
rtems_name name,
rtems_id *id
)
{
49318: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4931c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
49320: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
49326: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4932a: 4879 0006 1e60 pea 61e60 <_Extension_Information> <== NOT EXECUTED
49330: 4eb9 0004 a6c4 jsr 4a6c4 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
49336: 41f9 0005 f51a lea 5f51a <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4933c: 4e5e unlk %fp <== NOT EXECUTED
4933e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00048b58 <rtems_get_version_string>:
#endif
#include <rtems/system.h>
const char *rtems_get_version_string(void)
{
48b58: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _RTEMS_version;
}
48b5c: 203c 0005 fbbe movel #392126,%d0 <== NOT EXECUTED
48b62: 4e5e unlk %fp <== NOT EXECUTED
...
00046b3a <rtems_initialize_start_multitasking>:
46b3a: 7002 moveq #2,%d0
}
void rtems_initialize_start_multitasking(void)
{
46b3c: 4e56 0000 linkw %fp,#0
****** APPLICATION RUNS HERE ******
****** RETURNS WHEN SYSTEM IS SHUT DOWN ******
*******************************************************************
*******************************************************************
*******************************************************************/
}
46b40: 4e5e unlk %fp
46b42: 23c0 0005 e6a0 movel %d0,5e6a0 <_System_state_Current>
void rtems_initialize_start_multitasking(void)
{
_System_state_Set( SYSTEM_STATE_BEGIN_MULTITASKING );
_Thread_Start_multitasking();
46b48: 4ef9 0004 9360 jmp 49360 <_Thread_Start_multitasking>
...
00046198 <rtems_interrupt_catch>:
rtems_status_code rtems_interrupt_catch(
rtems_isr_entry new_isr_handler,
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
46198: 4e56 0000 linkw %fp,#0
4619c: 222e 0008 movel %fp@(8),%d1
461a0: 202e 000c movel %fp@(12),%d0
461a4: 206e 0010 moveal %fp@(16),%a0
if ( !_ISR_Is_vector_number_valid( vector ) )
461a8: 0c80 0000 00ff cmpil #255,%d0
461ae: 621e bhis 461ce <rtems_interrupt_catch+0x36> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
461b0: 4a81 tstl %d1
461b2: 6720 beqs 461d4 <rtems_interrupt_catch+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
461b4: 4a88 tstl %a0
461b6: 671c beqs 461d4 <rtems_interrupt_catch+0x3c> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
_ISR_Install_vector(
461b8: 2f08 movel %a0,%sp@-
461ba: 2f01 movel %d1,%sp@-
461bc: 2f00 movel %d0,%sp@-
461be: 4eb9 0004 9c26 jsr 49c26 <_CPU_ISR_install_vector>
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
461c4: 4fef 000c lea %sp@(12),%sp
461c8: 4280 clrl %d0
}
461ca: 4e5e unlk %fp
461cc: 4e75 rts
rtems_vector_number vector,
rtems_isr_entry *old_isr_handler
)
{
if ( !_ISR_Is_vector_number_valid( vector ) )
return RTEMS_INVALID_NUMBER;
461ce: 700a moveq #10,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
461d0: 4e5e unlk %fp <== NOT EXECUTED
461d2: 4e75 rts <== NOT EXECUTED
if ( !_ISR_Is_valid_user_handler( (void *) new_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
if ( !_ISR_Is_valid_user_handler( (void *) old_isr_handler ) )
return RTEMS_INVALID_ADDRESS;
461d4: 7009 moveq #9,%d0 <== NOT EXECUTED
_ISR_Install_vector(
vector, (proc_ptr)new_isr_handler, (proc_ptr *)old_isr_handler );
return RTEMS_SUCCESSFUL;
}
461d6: 4e5e unlk %fp <== NOT EXECUTED
...
000471e0 <rtems_interrupt_disable>:
rtems_interrupt_level rtems_interrupt_disable( void )
{
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
471e0: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
*/
#undef rtems_interrupt_disable
rtems_interrupt_level rtems_interrupt_disable( void )
{
471e6: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_interrupt_level previous_level;
_ISR_Disable( previous_level );
471ea: 40c0 movew %sr,%d0 <== NOT EXECUTED
471ec: 8280 orl %d0,%d1 <== NOT EXECUTED
471ee: 46c1 movew %d1,%sr <== NOT EXECUTED
return previous_level;
}
471f0: 4e5e unlk %fp <== NOT EXECUTED
000471f4 <rtems_interrupt_enable>:
#undef rtems_interrupt_enable
void rtems_interrupt_enable(
rtems_interrupt_level previous_level
)
{
471f4: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Enable( previous_level );
471f8: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
471fc: 46c0 movew %d0,%sr <== NOT EXECUTED
}
471fe: 4e5e unlk %fp <== NOT EXECUTED
00047202 <rtems_interrupt_flash>:
#undef rtems_interrupt_flash
void rtems_interrupt_flash(
rtems_interrupt_level previous_level
)
{
47202: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
_ISR_Flash( previous_level );
47206: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
4720a: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
47210: 46c1 movew %d1,%sr <== NOT EXECUTED
47212: 8081 orl %d1,%d0 <== NOT EXECUTED
47214: 46c0 movew %d0,%sr <== NOT EXECUTED
}
47216: 4e5e unlk %fp <== NOT EXECUTED
0004721a <rtems_interrupt_is_in_progress>:
*/
#undef rtems_interrupt_is_in_progress
bool rtems_interrupt_is_in_progress( void )
{
4721a: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _ISR_Is_in_progress();
4721e: 4ab9 0005 fe44 tstl 5fe44 <_Per_CPU_Information+0x8> <== NOT EXECUTED
47224: 56c0 sne %d0 <== NOT EXECUTED
}
47226: 4e5e unlk %fp <== NOT EXECUTED
47228: 4480 negl %d0 <== NOT EXECUTED
00046b4c <rtems_interrupt_level_attribute>:
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
return RTEMS_INTERRUPT_LEVEL(level);
}
46b4c: 7007 moveq #7,%d0 <== NOT EXECUTED
uint32_t rtems_interrupt_mask = RTEMS_INTERRUPT_MASK;
rtems_attribute rtems_interrupt_level_attribute(
uint32_t level
)
{
46b4e: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return RTEMS_INTERRUPT_LEVEL(level);
}
46b52: c0ae 0008 andl %fp@(8),%d0 <== NOT EXECUTED
46b56: 4e5e unlk %fp <== NOT EXECUTED
...
0004d5b4 <rtems_io_close>:
rtems_status_code rtems_io_close(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d5b4: 4e56 0000 linkw %fp,#0
4d5b8: 202e 0008 movel %fp@(8),%d0
4d5bc: 2f03 movel %d3,%sp@-
4d5be: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d5c0: b0b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d0
4d5c6: 6420 bccs 4d5e8 <rtems_io_close+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
4d5c8: 2600 movel %d0,%d3
4d5ca: 2400 movel %d0,%d2
4d5cc: e78b lsll #3,%d3
4d5ce: eb8a lsll #5,%d2
4d5d0: 2279 0005 e76c moveal 5e76c <_IO_Driver_address_table>,%a1
4d5d6: 9483 subl %d3,%d2
4d5d8: 2271 2808 moveal %a1@(00000008,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d5dc: 4a89 tstl %a1
4d5de: 6712 beqs 4d5f2 <rtems_io_close+0x3e> <== NEVER TAKEN
}
4d5e0: 241f movel %sp@+,%d2
4d5e2: 261f movel %sp@+,%d3
4d5e4: 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;
4d5e6: 4ed1 jmp %a1@
}
4d5e8: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d5ea: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d5ec: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d5ee: 4e5e unlk %fp <== NOT EXECUTED
4d5f0: 4e75 rts <== NOT EXECUTED
4d5f2: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].close_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d5f4: 4280 clrl %d0 <== NOT EXECUTED
}
4d5f6: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d5f8: 4e5e unlk %fp <== NOT EXECUTED
0004d5fc <rtems_io_control>:
rtems_status_code rtems_io_control(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d5fc: 4e56 0000 linkw %fp,#0
4d600: 202e 0008 movel %fp@(8),%d0
4d604: 2f03 movel %d3,%sp@-
4d606: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d608: b0b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d0
4d60e: 6420 bccs 4d630 <rtems_io_control+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
4d610: 2600 movel %d0,%d3
4d612: 2400 movel %d0,%d2
4d614: e78b lsll #3,%d3
4d616: eb8a lsll #5,%d2
4d618: 2279 0005 e76c moveal 5e76c <_IO_Driver_address_table>,%a1
4d61e: 9483 subl %d3,%d2
4d620: 2271 2814 moveal %a1@(00000014,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d624: 4a89 tstl %a1
4d626: 6712 beqs 4d63a <rtems_io_control+0x3e> <== NEVER TAKEN
}
4d628: 241f movel %sp@+,%d2
4d62a: 261f movel %sp@+,%d3
4d62c: 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;
4d62e: 4ed1 jmp %a1@
}
4d630: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d632: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d634: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d636: 4e5e unlk %fp <== NOT EXECUTED
4d638: 4e75 rts <== NOT EXECUTED
4d63a: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].control_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d63c: 4280 clrl %d0 <== NOT EXECUTED
}
4d63e: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d640: 4e5e unlk %fp <== NOT EXECUTED
0004b8ec <rtems_io_initialize>:
rtems_status_code rtems_io_initialize(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4b8ec: 4e56 0000 linkw %fp,#0
4b8f0: 202e 0008 movel %fp@(8),%d0
4b8f4: 2f03 movel %d3,%sp@-
4b8f6: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4b8f8: b0b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d0
4b8fe: 6420 bccs 4b920 <rtems_io_initialize+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
4b900: 2600 movel %d0,%d3
4b902: 2400 movel %d0,%d2
4b904: e78b lsll #3,%d3
4b906: 2279 0005 e76c moveal 5e76c <_IO_Driver_address_table>,%a1
4b90c: 93c3 subal %d3,%a1
4b90e: eb8a lsll #5,%d2
4b910: 2271 2800 moveal %a1@(00000000,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4b914: 4a89 tstl %a1
4b916: 6712 beqs 4b92a <rtems_io_initialize+0x3e>
}
4b918: 241f movel %sp@+,%d2
4b91a: 261f movel %sp@+,%d3
4b91c: 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;
4b91e: 4ed1 jmp %a1@
}
4b920: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4b922: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4b924: 261f movel %sp@+,%d3 <== NOT EXECUTED
4b926: 4e5e unlk %fp <== NOT EXECUTED
4b928: 4e75 rts <== NOT EXECUTED
4b92a: 241f movel %sp@+,%d2
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].initialization_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4b92c: 4280 clrl %d0
}
4b92e: 261f movel %sp@+,%d3
4b930: 4e5e unlk %fp <== NOT EXECUTED
0004d644 <rtems_io_open>:
rtems_status_code rtems_io_open(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d644: 4e56 0000 linkw %fp,#0
4d648: 202e 0008 movel %fp@(8),%d0
4d64c: 2f03 movel %d3,%sp@-
4d64e: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d650: b0b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d0
4d656: 6420 bccs 4d678 <rtems_io_open+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
4d658: 2600 movel %d0,%d3
4d65a: 2400 movel %d0,%d2
4d65c: e78b lsll #3,%d3
4d65e: eb8a lsll #5,%d2
4d660: 2279 0005 e76c moveal 5e76c <_IO_Driver_address_table>,%a1
4d666: 9483 subl %d3,%d2
4d668: 2271 2804 moveal %a1@(00000004,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d66c: 4a89 tstl %a1
4d66e: 6712 beqs 4d682 <rtems_io_open+0x3e> <== NEVER TAKEN
}
4d670: 241f movel %sp@+,%d2
4d672: 261f movel %sp@+,%d3
4d674: 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;
4d676: 4ed1 jmp %a1@
}
4d678: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d67a: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d67c: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d67e: 4e5e unlk %fp <== NOT EXECUTED
4d680: 4e75 rts <== NOT EXECUTED
4d682: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].open_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d684: 4280 clrl %d0 <== NOT EXECUTED
}
4d686: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d688: 4e5e unlk %fp <== NOT EXECUTED
0004d68c <rtems_io_read>:
rtems_status_code rtems_io_read(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d68c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4d690: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
4d694: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4d696: 2f02 movel %d2,%sp@- <== NOT EXECUTED
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d698: b0b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
4d69e: 6420 bccs 4d6c0 <rtems_io_read+0x34> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
4d6a0: 2600 movel %d0,%d3 <== NOT EXECUTED
4d6a2: 2400 movel %d0,%d2 <== NOT EXECUTED
4d6a4: e78b lsll #3,%d3 <== NOT EXECUTED
4d6a6: eb8a lsll #5,%d2 <== NOT EXECUTED
4d6a8: 2279 0005 e76c moveal 5e76c <_IO_Driver_address_table>,%a1 <== NOT EXECUTED
4d6ae: 9483 subl %d3,%d2 <== NOT EXECUTED
4d6b0: 2271 280c moveal %a1@(0000000c,%d2:l),%a1 <== NOT EXECUTED
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d6b4: 4a89 tstl %a1 <== NOT EXECUTED
4d6b6: 6712 beqs 4d6ca <rtems_io_read+0x3e> <== NOT EXECUTED
}
4d6b8: 241f movel %sp@+,%d2 <== NOT EXECUTED
4d6ba: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d6bc: 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;
4d6be: 4ed1 jmp %a1@ <== NOT EXECUTED
}
4d6c0: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d6c2: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d6c4: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d6c6: 4e5e unlk %fp <== NOT EXECUTED
4d6c8: 4e75 rts <== NOT EXECUTED
4d6ca: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].read_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d6cc: 4280 clrl %d0 <== NOT EXECUTED
}
4d6ce: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d6d0: 4e5e unlk %fp <== NOT EXECUTED
0004809c <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
)
{
4809c: 4e56 fff4 linkw %fp,#-12
480a0: 226e 000c moveal %fp@(12),%a1
480a4: 48d7 040c moveml %d2-%d3/%a2,%sp@
480a8: 242e 0008 movel %fp@(8),%d2
480ac: 246e 0010 moveal %fp@(16),%a2
rtems_device_major_number major_limit = _IO_Number_of_drivers;
480b0: 2039 0006 29a0 movel 629a0 <_IO_Number_of_drivers>,%d0
if ( rtems_interrupt_is_in_progress() )
480b6: 4ab9 0006 292c tstl 6292c <_Per_CPU_Information+0x8>
480bc: 6600 009c bnew 4815a <rtems_io_register_driver+0xbe>
return RTEMS_CALLED_FROM_ISR;
if ( registered_major == NULL )
480c0: 4a8a tstl %a2
480c2: 6700 00ea beqw 481ae <rtems_io_register_driver+0x112>
return RTEMS_INVALID_ADDRESS;
/* Set it to an invalid value */
*registered_major = major_limit;
480c6: 2480 movel %d0,%a2@
if ( driver_table == NULL )
480c8: 4a89 tstl %a1
480ca: 6700 00e2 beqw 481ae <rtems_io_register_driver+0x112>
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
480ce: 4a91 tstl %a1@
480d0: 6700 00d4 beqw 481a6 <rtems_io_register_driver+0x10a>
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
480d4: b480 cmpl %d0,%d2
480d6: 6476 bccs 4814e <rtems_io_register_driver+0xb2> <== NEVER TAKEN
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
480d8: 2039 0006 2770 movel 62770 <_Thread_Dispatch_disable_level>,%d0
480de: 5280 addql #1,%d0
480e0: 23c0 0006 2770 movel %d0,62770 <_Thread_Dispatch_disable_level>
return RTEMS_INVALID_NUMBER;
_Thread_Disable_dispatch();
if ( major == 0 ) {
480e6: 4a82 tstl %d2
480e8: 667c bnes 48166 <rtems_io_register_driver+0xca> <== NEVER TAKEN
static rtems_status_code rtems_io_obtain_major_number(
rtems_device_major_number *major
)
{
rtems_device_major_number n = _IO_Number_of_drivers;
480ea: 2039 0006 29a0 movel 629a0 <_IO_Number_of_drivers>,%d0
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
480f0: 6700 0106 beqw 481f8 <rtems_io_register_driver+0x15c>
480f4: 2239 0006 29a4 movel 629a4 <_IO_Driver_address_table>,%d1
480fa: 2041 moveal %d1,%a0
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
480fc: 4a90 tstl %a0@
480fe: 6700 008e beqw 4818e <rtems_io_register_driver+0xf2>
rtems_device_major_number n = _IO_Number_of_drivers;
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
48102: 5282 addql #1,%d2
48104: 41e8 0018 lea %a0@(24),%a0
48108: b480 cmpl %d0,%d2
4810a: 65f0 bcss 480fc <rtems_io_register_driver+0x60> <== ALWAYS TAKEN
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
4810c: 2482 movel %d2,%a2@
if ( m != n )
4810e: b480 cmpl %d0,%d2
48110: 6700 00e8 beqw 481fa <rtems_io_register_driver+0x15e>
48114: 2602 movel %d2,%d3
48116: 2002 movel %d2,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48118: 2041 moveal %d1,%a0
}
/* Assigns invalid value in case of failure */
*major = m;
if ( m != n )
4811a: e78b lsll #3,%d3
4811c: eb88 lsll #5,%d0
4811e: 9083 subl %d3,%d0
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
48120: d1c0 addal %d0,%a0
48122: 20d9 movel %a1@+,%a0@+
48124: 20d9 movel %a1@+,%a0@+
48126: 20d9 movel %a1@+,%a0@+
48128: 20d9 movel %a1@+,%a0@+
4812a: 20d9 movel %a1@+,%a0@+
4812c: 2091 movel %a1@,%a0@
_Thread_Enable_dispatch();
4812e: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch>
return rtems_io_initialize( major, 0, NULL );
48134: 2d42 0008 movel %d2,%fp@(8)
}
48138: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
4813e: 42ae 0010 clrl %fp@(16)
48142: 42ae 000c clrl %fp@(12)
}
48146: 4e5e unlk %fp
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
48148: 4ef9 0004 fc84 jmp 4fc84 <rtems_io_initialize>
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
if ( major >= major_limit )
return RTEMS_INVALID_NUMBER;
4814e: 700a moveq #10,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48150: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48156: 4e5e unlk %fp <== NOT EXECUTED
48158: 4e75 rts <== NOT EXECUTED
)
{
rtems_device_major_number major_limit = _IO_Number_of_drivers;
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
4815a: 7012 moveq #18,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
4815c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48162: 4e5e unlk %fp <== NOT EXECUTED
48164: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return sc;
}
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
48166: 2202 movel %d2,%d1 <== NOT EXECUTED
48168: 2002 movel %d2,%d0 <== NOT EXECUTED
4816a: e789 lsll #3,%d1 <== NOT EXECUTED
4816c: eb88 lsll #5,%d0 <== NOT EXECUTED
4816e: 2079 0006 29a4 moveal 629a4 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
48174: 9081 subl %d1,%d0 <== NOT EXECUTED
48176: d1c0 addal %d0,%a0 <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
48178: 4a90 tstl %a0@ <== NOT EXECUTED
4817a: 673e beqs 481ba <rtems_io_register_driver+0x11e> <== NOT EXECUTED
major = *registered_major;
} else {
rtems_driver_address_table *const table = _IO_Driver_address_table + major;
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
4817c: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
48182: 700c moveq #12,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48184: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
4818a: 4e5e unlk %fp <== NOT EXECUTED
4818c: 4e75 rts <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
4818e: 4aa8 0004 tstl %a0@(4)
48192: 6700 ff78 beqw 4810c <rtems_io_register_driver+0x70>
rtems_device_major_number n = _IO_Number_of_drivers;
rtems_device_major_number m = 0;
/* major is error checked by caller */
for ( m = 0; m < n; ++m ) {
48196: 5282 addql #1,%d2
48198: 41e8 0018 lea %a0@(24),%a0
4819c: b480 cmpl %d0,%d2
4819e: 6500 ff5c bcsw 480fc <rtems_io_register_driver+0x60>
481a2: 6000 ff68 braw 4810c <rtems_io_register_driver+0x70> <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
481a6: 4aa9 0004 tstl %a1@(4)
481aa: 6600 ff28 bnew 480d4 <rtems_io_register_driver+0x38>
if ( driver_table == NULL )
return RTEMS_INVALID_ADDRESS;
if ( rtems_io_is_empty_table( driver_table ) )
return RTEMS_INVALID_ADDRESS;
481ae: 7009 moveq #9,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
481b0: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
481b6: 4e5e unlk %fp <== NOT EXECUTED
481b8: 4e75 rts <== NOT EXECUTED
static inline bool rtems_io_is_empty_table(
const rtems_driver_address_table *table
)
{
return table->initialization_entry == NULL && table->open_entry == NULL;
481ba: 4aa8 0004 tstl %a0@(4) <== NOT EXECUTED
481be: 66bc bnes 4817c <rtems_io_register_driver+0xe0> <== NOT EXECUTED
481c0: 2239 0006 29a4 movel 629a4 <_IO_Driver_address_table>,%d1 <== NOT EXECUTED
}
*registered_major = major;
}
_IO_Driver_address_table [major] = *driver_table;
481c6: 2041 moveal %d1,%a0 <== NOT EXECUTED
481c8: d1c0 addal %d0,%a0 <== NOT EXECUTED
if ( !rtems_io_is_empty_table( table ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
*registered_major = major;
481ca: 2482 movel %d2,%a2@ <== NOT EXECUTED
}
_IO_Driver_address_table [major] = *driver_table;
481cc: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481ce: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481d0: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481d2: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481d4: 20d9 movel %a1@+,%a0@+ <== NOT EXECUTED
481d6: 2091 movel %a1@,%a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
481d8: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch> <== NOT EXECUTED
return rtems_io_initialize( major, 0, NULL );
481de: 2d42 0008 movel %d2,%fp@(8) <== NOT EXECUTED
}
481e2: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481e8: 42ae 0010 clrl %fp@(16) <== NOT EXECUTED
481ec: 42ae 000c clrl %fp@(12) <== NOT EXECUTED
}
481f0: 4e5e unlk %fp <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
481f2: 4ef9 0004 fc84 jmp 4fc84 <rtems_io_initialize> <== NOT EXECUTED
if ( rtems_io_is_empty_table( table ) )
break;
}
/* Assigns invalid value in case of failure */
*major = m;
481f8: 4292 clrl %a2@ <== NOT EXECUTED
if ( major == 0 ) {
rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
if ( sc != RTEMS_SUCCESSFUL ) {
_Thread_Enable_dispatch();
481fa: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch> <== NOT EXECUTED
*major = m;
if ( m != n )
return RTEMS_SUCCESSFUL;
return RTEMS_TOO_MANY;
48200: 7005 moveq #5,%d0 <== NOT EXECUTED
_IO_Driver_address_table [major] = *driver_table;
_Thread_Enable_dispatch();
return rtems_io_initialize( major, 0, NULL );
}
48202: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
48208: 4e5e unlk %fp <== NOT EXECUTED
0004820c <rtems_io_unregister_driver>:
*/
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
4820c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48210: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
48214: 4ab9 0006 292c tstl 6292c <_Per_CPU_Information+0x8> <== NOT EXECUTED
4821a: 6644 bnes 48260 <rtems_io_unregister_driver+0x54><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
4821c: b0b9 0006 29a0 cmpl 629a0 <_IO_Number_of_drivers>,%d0 <== NOT EXECUTED
48222: 6506 bcss 4822a <rtems_io_unregister_driver+0x1e><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
48224: 700d moveq #13,%d0 <== NOT EXECUTED
}
48226: 4e5e unlk %fp <== NOT EXECUTED
48228: 4e75 rts <== NOT EXECUTED
4822a: 2239 0006 2770 movel 62770 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
48230: 5281 addql #1,%d1 <== NOT EXECUTED
48232: 23c1 0006 2770 movel %d1,62770 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
&_IO_Driver_address_table[major],
48238: 2200 movel %d0,%d1 <== NOT EXECUTED
4823a: eb88 lsll #5,%d0 <== NOT EXECUTED
4823c: e789 lsll #3,%d1 <== NOT EXECUTED
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
if ( major < _IO_Number_of_drivers ) {
_Thread_Disable_dispatch();
memset(
4823e: 2079 0006 29a4 moveal 629a4 <_IO_Driver_address_table>,%a0 <== NOT EXECUTED
&_IO_Driver_address_table[major],
48244: 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(
48246: d1c0 addal %d0,%a0 <== NOT EXECUTED
48248: 4298 clrl %a0@+ <== NOT EXECUTED
4824a: 4298 clrl %a0@+ <== NOT EXECUTED
4824c: 4298 clrl %a0@+ <== NOT EXECUTED
4824e: 4298 clrl %a0@+ <== NOT EXECUTED
48250: 4298 clrl %a0@+ <== NOT EXECUTED
48252: 4290 clrl %a0@ <== NOT EXECUTED
&_IO_Driver_address_table[major],
0,
sizeof( rtems_driver_address_table )
);
_Thread_Enable_dispatch();
48254: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4825a: 4280 clrl %d0 <== NOT EXECUTED
}
return RTEMS_UNSATISFIED;
}
4825c: 4e5e unlk %fp <== NOT EXECUTED
4825e: 4e75 rts <== NOT EXECUTED
rtems_status_code rtems_io_unregister_driver(
rtems_device_major_number major
)
{
if ( rtems_interrupt_is_in_progress() )
return RTEMS_CALLED_FROM_ISR;
48260: 7012 moveq #18,%d0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
return RTEMS_UNSATISFIED;
}
48262: 4e5e unlk %fp <== NOT EXECUTED
...
0004d6d4 <rtems_io_write>:
rtems_status_code rtems_io_write(
rtems_device_major_number major,
rtems_device_minor_number minor,
void *argument
)
{
4d6d4: 4e56 0000 linkw %fp,#0
4d6d8: 202e 0008 movel %fp@(8),%d0
4d6dc: 2f03 movel %d3,%sp@-
4d6de: 2f02 movel %d2,%sp@-
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
4d6e0: b0b9 0005 e768 cmpl 5e768 <_IO_Number_of_drivers>,%d0
4d6e6: 6420 bccs 4d708 <rtems_io_write+0x34> <== NEVER TAKEN
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
4d6e8: 2600 movel %d0,%d3
4d6ea: 2400 movel %d0,%d2
4d6ec: e78b lsll #3,%d3
4d6ee: eb8a lsll #5,%d2
4d6f0: 2279 0005 e76c moveal 5e76c <_IO_Driver_address_table>,%a1
4d6f6: 9483 subl %d3,%d2
4d6f8: 2271 2810 moveal %a1@(00000010,%d2:l),%a1
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d6fc: 4a89 tstl %a1
4d6fe: 6712 beqs 4d712 <rtems_io_write+0x3e> <== NEVER TAKEN
}
4d700: 241f movel %sp@+,%d2
4d702: 261f movel %sp@+,%d3
4d704: 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;
4d706: 4ed1 jmp %a1@
}
4d708: 241f movel %sp@+,%d2 <== NOT EXECUTED
)
{
rtems_device_driver_entry callout;
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
4d70a: 700a moveq #10,%d0 <== NOT EXECUTED
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
}
4d70c: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d70e: 4e5e unlk %fp <== NOT EXECUTED
4d710: 4e75 rts <== NOT EXECUTED
4d712: 241f movel %sp@+,%d2 <== NOT EXECUTED
if ( major >= _IO_Number_of_drivers )
return RTEMS_INVALID_NUMBER;
callout = _IO_Driver_address_table[major].write_entry;
return callout ? callout(major, minor, argument) : RTEMS_SUCCESSFUL;
4d714: 4280 clrl %d0 <== NOT EXECUTED
}
4d716: 261f movel %sp@+,%d3 <== NOT EXECUTED
4d718: 4e5e unlk %fp <== NOT EXECUTED
000492a0 <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)
{
492a0: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
492a4: 48d7 1c04 moveml %d2/%a2-%a4,%sp@ <== NOT EXECUTED
492a8: 266e 0008 moveal %fp@(8),%a3 <== NOT EXECUTED
uint32_t i;
uint32_t api_index;
Thread_Control *the_thread;
Objects_Information *information;
if ( !routine )
492ac: 4a8b tstl %a3 <== NOT EXECUTED
492ae: 6742 beqs 492f2 <rtems_iterate_over_all_threads+0x52><== NOT EXECUTED
492b0: 49f9 0006 8a88 lea 68a88 <_Objects_Information_table+0x4>,%a4<== NOT EXECUTED
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
#if !defined(RTEMS_POSIX_API) || defined(RTEMS_DEBUG)
if ( !_Objects_Information_table[ api_index ] )
492b6: 205c moveal %a4@+,%a0 <== NOT EXECUTED
492b8: 4a88 tstl %a0 <== NOT EXECUTED
492ba: 672e beqs 492ea <rtems_iterate_over_all_threads+0x4a><== NOT EXECUTED
continue;
#endif
information = _Objects_Information_table[ api_index ][ 1 ];
492bc: 2468 0004 moveal %a0@(4),%a2 <== NOT EXECUTED
if ( !information )
492c0: 4a8a tstl %a2 <== NOT EXECUTED
492c2: 6726 beqs 492ea <rtems_iterate_over_all_threads+0x4a><== NOT EXECUTED
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
492c4: 4a6a 000e tstw %a2@(14) <== NOT EXECUTED
492c8: 6720 beqs 492ea <rtems_iterate_over_all_threads+0x4a><== NOT EXECUTED
492ca: 7401 moveq #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
492cc: 206a 0018 moveal %a2@(24),%a0 <== NOT EXECUTED
492d0: 2030 2c00 movel %a0@(00000000,%d2:l:4),%d0 <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
492d4: 5282 addql #1,%d2 <== NOT EXECUTED
the_thread = (Thread_Control *)information->local_table[ i ];
if ( !the_thread )
492d6: 4a80 tstl %d0 <== NOT EXECUTED
492d8: 6706 beqs 492e0 <rtems_iterate_over_all_threads+0x40><== NOT EXECUTED
continue;
(*routine)(the_thread);
492da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
492dc: 4e93 jsr %a3@ <== NOT EXECUTED
492de: 588f addql #4,%sp <== NOT EXECUTED
information = _Objects_Information_table[ api_index ][ 1 ];
if ( !information )
continue;
for ( i=1 ; i <= information->maximum ; i++ ) {
492e0: 4280 clrl %d0 <== NOT EXECUTED
492e2: 302a 000e movew %a2@(14),%d0 <== NOT EXECUTED
492e6: b480 cmpl %d0,%d2 <== NOT EXECUTED
492e8: 63e2 blss 492cc <rtems_iterate_over_all_threads+0x2c><== NOT EXECUTED
Objects_Information *information;
if ( !routine )
return;
for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
492ea: b9fc 0006 8a94 cmpal #428692,%a4 <== NOT EXECUTED
492f0: 66c4 bnes 492b6 <rtems_iterate_over_all_threads+0x16><== NOT EXECUTED
(*routine)(the_thread);
}
}
}
492f2: 4cee 1c04 fff0 moveml %fp@(-16),%d2/%a2-%a4 <== NOT EXECUTED
492f8: 4e5e unlk %fp <== NOT EXECUTED
000562dc <rtems_message_queue_broadcast>:
rtems_id id,
const void *buffer,
size_t size,
uint32_t *count
)
{
562dc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
562e0: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
562e4: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
562e8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
562ec: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status core_status;
if ( !buffer )
562f0: 4a82 tstl %d2 <== NOT EXECUTED
562f2: 6762 beqs 56356 <rtems_message_queue_broadcast+0x7a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !count )
562f4: 4a83 tstl %d3 <== NOT EXECUTED
562f6: 675e beqs 56356 <rtems_message_queue_broadcast+0x7a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
562f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
562fc: 2f04 movel %d4,%sp@- <== NOT EXECUTED
562fe: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
56304: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5630a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5630e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56312: 6636 bnes 5634a <rtems_message_queue_broadcast+0x6e><== NOT EXECUTED
case OBJECTS_LOCAL:
core_status = _CORE_message_queue_Broadcast(
56314: 2f03 movel %d3,%sp@- <== NOT EXECUTED
56316: 2040 moveal %d0,%a0 <== NOT EXECUTED
56318: 42a7 clrl %sp@- <== NOT EXECUTED
5631a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5631c: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
56320: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56322: 4868 0014 pea %a0@(20) <== NOT EXECUTED
56326: 4eb9 0005 9d04 jsr 59d04 <_CORE_message_queue_Broadcast> <== NOT EXECUTED
5632c: 2400 movel %d0,%d2 <== NOT EXECUTED
NULL,
#endif
count
);
_Thread_Enable_dispatch();
5632e: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return
56334: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56336: 4eb9 0005 66e0 jsr 566e0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
5633c: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56340: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
56346: 4e5e unlk %fp <== NOT EXECUTED
56348: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5634a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5634c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
56352: 4e5e unlk %fp <== NOT EXECUTED
56354: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56356: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56358: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
5635e: 4e5e unlk %fp <== NOT EXECUTED
...
0004ed50 <rtems_message_queue_create>:
uint32_t count,
size_t max_message_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
4ed50: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
4ed54: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
4ed58: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
4ed5c: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
4ed60: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
4ed64: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
CORE_message_queue_Attributes the_msgq_attributes;
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
4ed68: 4a82 tstl %d2 <== NOT EXECUTED
4ed6a: 6726 beqs 4ed92 <rtems_message_queue_create+0x42><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
4ed6c: 4a8a tstl %a2 <== NOT EXECUTED
4ed6e: 6700 009c beqw 4ee0c <rtems_message_queue_create+0xbc><== NOT EXECUTED
if ( (is_global = _Attributes_Is_global( attribute_set ) ) &&
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
4ed72: 4a83 tstl %d3 <== NOT EXECUTED
4ed74: 6710 beqs 4ed86 <rtems_message_queue_create+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( max_message_size == 0 )
4ed76: 4a84 tstl %d4 <== NOT EXECUTED
4ed78: 6624 bnes 4ed9e <rtems_message_queue_create+0x4e><== NOT EXECUTED
return RTEMS_INVALID_SIZE;
4ed7a: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed7c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ed82: 4e5e unlk %fp <== NOT EXECUTED
4ed84: 4e75 rts <== NOT EXECUTED
!_System_state_Is_multiprocessing )
return RTEMS_MP_NOT_CONFIGURED;
#endif
if ( count == 0 )
return RTEMS_INVALID_NUMBER;
4ed86: 700a moveq #10,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed88: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ed8e: 4e5e unlk %fp <== NOT EXECUTED
4ed90: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_MULTIPROCESSING)
bool is_global;
#endif
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4ed92: 7003 moveq #3,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ed94: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ed9a: 4e5e unlk %fp <== NOT EXECUTED
4ed9c: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4ed9e: 2039 0006 83e0 movel 683e0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
4eda4: 5280 addql #1,%d0 <== NOT EXECUTED
4eda6: 23c0 0006 83e0 movel %d0,683e0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
#endif
#endif
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
4edac: 4eb9 0005 4a10 jsr 54a10 <_Message_queue_Allocate> <== NOT EXECUTED
4edb2: 2640 moveal %d0,%a3 <== NOT EXECUTED
if ( !the_message_queue ) {
4edb4: 4a80 tstl %d0 <== NOT EXECUTED
4edb6: 6700 008a beqw 4ee42 <rtems_message_queue_create+0xf2><== NOT EXECUTED
#endif
the_message_queue->attribute_set = attribute_set;
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edba: 202e 0014 movel %fp@(20),%d0 <== NOT EXECUTED
4edbe: 204e moveal %fp,%a0 <== NOT EXECUTED
4edc0: 44c0 movew %d0,%ccr <== NOT EXECUTED
4edc2: 56c0 sne %d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4edc4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edc8: 49c0 extbl %d0 <== NOT EXECUTED
4edca: 5280 addql #1,%d0 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_message_queue->attribute_set = attribute_set;
4edcc: 2741 0010 movel %d1,%a3@(16) <== NOT EXECUTED
if (_Attributes_Is_priority( attribute_set ) )
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_PRIORITY;
4edd0: 2100 movel %d0,%a0@- <== NOT EXECUTED
else
the_msgq_attributes.discipline = CORE_MESSAGE_QUEUE_DISCIPLINES_FIFO;
if ( ! _CORE_message_queue_Initialize(
4edd2: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4edd4: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4edd6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4edd8: 486b 0014 pea %a3@(20) <== NOT EXECUTED
4eddc: 4eb9 0005 010c jsr 5010c <_CORE_message_queue_Initialize> <== NOT EXECUTED
4ede2: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
4ede6: 4a00 tstb %d0 <== NOT EXECUTED
4ede8: 662e bnes 4ee18 <rtems_message_queue_create+0xc8><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
{
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
4edea: 2f0b movel %a3,%sp@- <== NOT EXECUTED
4edec: 4879 0006 85d8 pea 685d8 <_Message_queue_Information> <== NOT EXECUTED
4edf2: 4eb9 0005 105c jsr 5105c <_Objects_Free> <== NOT EXECUTED
_Objects_MP_Close(
&_Message_queue_Information, the_message_queue->Object.id);
#endif
_Message_queue_Free( the_message_queue );
_Thread_Enable_dispatch();
4edf8: 4eb9 0005 1dde jsr 51dde <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
4edfe: 508f addql #8,%sp <== NOT EXECUTED
4ee00: 700d moveq #13,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee02: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ee08: 4e5e unlk %fp <== NOT EXECUTED
4ee0a: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
4ee0c: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee0e: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ee14: 4e5e unlk %fp <== NOT EXECUTED
4ee16: 4e75 rts <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4ee18: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee1c: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee1e: 2079 0006 85f0 moveal 685f0 <_Message_queue_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
4ee24: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4ee26: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4ee2a: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Message_queue_Information,
&the_message_queue->Object,
(Objects_Name) name
);
*id = the_message_queue->Object.id;
4ee2e: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0
);
#endif
_Thread_Enable_dispatch();
4ee30: 4eb9 0005 1dde jsr 51dde <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4ee36: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
0
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ee3c: 4280 clrl %d0 <== NOT EXECUTED
}
4ee3e: 4e5e unlk %fp <== NOT EXECUTED
4ee40: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* protects object pointer */
the_message_queue = _Message_queue_Allocate();
if ( !the_message_queue ) {
_Thread_Enable_dispatch();
4ee42: 4eb9 0005 1dde jsr 51dde <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4ee48: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4ee4a: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
4ee50: 4e5e unlk %fp <== NOT EXECUTED
00056468 <rtems_message_queue_delete>:
*/
rtems_status_code rtems_message_queue_delete(
rtems_id id
)
{
56468: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5646c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
5646e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56472: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56476: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
5647c: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
56482: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56486: 2440 moveal %d0,%a2 <== NOT EXECUTED
56488: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
5648c: 6640 bnes 564ce <rtems_message_queue_delete+0x66><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Message_queue_Information,
5648e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
56490: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
56496: 4eb9 0005 b3e0 jsr 5b3e0 <_Objects_Close> <== NOT EXECUTED
&the_message_queue->Object );
_CORE_message_queue_Close(
5649c: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
564a0: 42a7 clrl %sp@- <== NOT EXECUTED
564a2: 486a 0014 pea %a2@(20) <== NOT EXECUTED
564a6: 4eb9 0005 9d90 jsr 59d90 <_CORE_message_queue_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Message_queue_Free (
Message_queue_Control *the_message_queue
)
{
_Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
564ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
564ae: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
564b4: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
0, /* Not used */
0
);
}
#endif
_Thread_Enable_dispatch();
564ba: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564c0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
0
);
}
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
564c4: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
564c8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
564ca: 4e5e unlk %fp <== NOT EXECUTED
564cc: 4e75 rts <== NOT EXECUTED
564ce: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
564d2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
564d4: 4e5e unlk %fp <== NOT EXECUTED
000564d8 <rtems_message_queue_flush>:
rtems_status_code rtems_message_queue_flush(
rtems_id id,
uint32_t *count
)
{
564d8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
564dc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
564de: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
564e2: 4a8a tstl %a2 <== NOT EXECUTED
564e4: 6748 beqs 5652e <rtems_message_queue_flush+0x56> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
564e6: 486e fffc pea %fp@(-4) <== NOT EXECUTED
564ea: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
564ee: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
564f4: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
564fa: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
564fe: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56502: 6620 bnes 56524 <rtems_message_queue_flush+0x4c> <== NOT EXECUTED
case OBJECTS_LOCAL:
*count = _CORE_message_queue_Flush( &the_message_queue->message_queue );
56504: 2040 moveal %d0,%a0 <== NOT EXECUTED
56506: 4868 0014 pea %a0@(20) <== NOT EXECUTED
5650a: 4eb9 0005 9de4 jsr 59de4 <_CORE_message_queue_Flush> <== NOT EXECUTED
56510: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
56512: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56518: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
*count = _CORE_message_queue_Flush( &the_message_queue->message_queue );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
5651c: 588f addql #4,%sp <== NOT EXECUTED
5651e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56520: 4e5e unlk %fp <== NOT EXECUTED
56522: 4e75 rts <== NOT EXECUTED
56524: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56528: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5652a: 4e5e unlk %fp <== NOT EXECUTED
5652c: 4e75 rts <== NOT EXECUTED
5652e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56532: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56534: 4e5e unlk %fp <== NOT EXECUTED
00056538 <rtems_message_queue_get_number_pending>:
rtems_status_code rtems_message_queue_get_number_pending(
rtems_id id,
uint32_t *count
)
{
56538: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5653c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5653e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
56542: 4a8a tstl %a2 <== NOT EXECUTED
56544: 673e beqs 56584 <rtems_message_queue_get_number_pending+0x4c><== NOT EXECUTED
56546: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5654a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5654e: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
56554: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5655a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
5655e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56562: 6616 bnes 5657a <rtems_message_queue_get_number_pending+0x42><== NOT EXECUTED
case OBJECTS_LOCAL:
*count = the_message_queue->message_queue.number_of_pending_messages;
56564: 2040 moveal %d0,%a0 <== NOT EXECUTED
56566: 24a8 005c movel %a0@(92),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
5656a: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56570: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
*count = the_message_queue->message_queue.number_of_pending_messages;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56574: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56576: 4e5e unlk %fp <== NOT EXECUTED
56578: 4e75 rts <== NOT EXECUTED
5657a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5657e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56580: 4e5e unlk %fp <== NOT EXECUTED
56582: 4e75 rts <== NOT EXECUTED
56584: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
register Message_queue_Control *the_message_queue;
Objects_Locations location;
if ( !count )
return RTEMS_INVALID_ADDRESS;
56588: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5658a: 4e5e unlk %fp <== NOT EXECUTED
...
0004ee54 <rtems_message_queue_ident>:
rtems_status_code rtems_message_queue_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4ee54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
4ee58: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ee5c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4ee60: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4ee64: 4879 0006 85d8 pea 685d8 <_Message_queue_Information> <== NOT EXECUTED
4ee6a: 4eb9 0005 1354 jsr 51354 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
node,
id
);
return _Status_Object_name_errors_to_status[ status ];
4ee70: 41f9 0006 5d02 lea 65d02 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4ee76: 4e5e unlk %fp <== NOT EXECUTED
4ee78: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
0004ee80 <rtems_message_queue_receive>:
void *buffer,
size_t *size,
rtems_option option_set,
rtems_interval timeout
)
{
4ee80: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
4ee84: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
4ee88: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
4ee8c: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
bool wait;
if ( !buffer )
4ee90: 4a82 tstl %d2 <== NOT EXECUTED
4ee92: 6776 beqs 4ef0a <rtems_message_queue_receive+0x8a><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
4ee94: 4a83 tstl %d3 <== NOT EXECUTED
4ee96: 6772 beqs 4ef0a <rtems_message_queue_receive+0x8a><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Message_queue_Control *)
_Objects_Get( &_Message_queue_Information, id, location );
4ee98: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ee9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4eea0: 4879 0006 85d8 pea 685d8 <_Message_queue_Information> <== NOT EXECUTED
4eea6: 4eb9 0005 11c8 jsr 511c8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4eeac: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4eeb0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4eeb4: 6648 bnes 4eefe <rtems_message_queue_receive+0x7e><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (
rtems_option option_set
)
{
return (option_set & RTEMS_NO_WAIT) ? true : false;
4eeb6: 7201 moveq #1,%d1 <== NOT EXECUTED
if ( _Options_Is_no_wait( option_set ) )
wait = false;
else
wait = true;
_CORE_message_queue_Seize(
4eeb8: 7801 moveq #1,%d4 <== NOT EXECUTED
4eeba: 2040 moveal %d0,%a0 <== NOT EXECUTED
4eebc: c2ae 0014 andl %fp@(20),%d1 <== NOT EXECUTED
4eec0: 2f2e 0018 movel %fp@(24),%sp@- <== NOT EXECUTED
4eec4: b384 eorl %d1,%d4 <== NOT EXECUTED
4eec6: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4eec8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4eeca: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4eecc: 2f28 0008 movel %a0@(8),%sp@- <== NOT EXECUTED
4eed0: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4eed4: 4eb9 0005 01c4 jsr 501c4 <_CORE_message_queue_Seize> <== NOT EXECUTED
buffer,
size,
wait,
timeout
);
_Thread_Enable_dispatch();
4eeda: 4eb9 0005 1dde jsr 51dde <_Thread_Enable_dispatch> <== NOT EXECUTED
return _Message_queue_Translate_core_message_queue_return_code(
_Thread_Executing->Wait.return_code
4eee0: 2079 0006 85a0 moveal 685a0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
size,
wait,
timeout
);
_Thread_Enable_dispatch();
return _Message_queue_Translate_core_message_queue_return_code(
4eee6: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4eeea: 4eb9 0004 efa4 jsr 4efa4 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
4eef0: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4eef4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4eefa: 4e5e unlk %fp <== NOT EXECUTED
4eefc: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4eefe: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef00: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4ef06: 4e5e unlk %fp <== NOT EXECUTED
4ef08: 4e75 rts <== NOT EXECUTED
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
4ef0a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef0c: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
4ef12: 4e5e unlk %fp <== NOT EXECUTED
...
0004ef18 <rtems_message_queue_send>:
rtems_status_code rtems_message_queue_send(
rtems_id id,
const void *buffer,
size_t size
)
{
4ef18: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4ef1c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ef1e: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4ef22: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef24: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
4ef28: 676c beqs 4ef96 <rtems_message_queue_send+0x7e> <== NOT EXECUTED
4ef2a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4ef2e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ef30: 4879 0006 85d8 pea 685d8 <_Message_queue_Information> <== NOT EXECUTED
4ef36: 4eb9 0005 11c8 jsr 511c8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
4ef3c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4ef40: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4ef44: 6642 bnes 4ef88 <rtems_message_queue_send+0x70> <== NOT EXECUTED
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support,
bool wait,
Watchdog_Interval timeout
)
{
return _CORE_message_queue_Submit(
4ef46: 42a7 clrl %sp@- <== NOT EXECUTED
4ef48: 2040 moveal %d0,%a0 <== NOT EXECUTED
4ef4a: 42a7 clrl %sp@- <== NOT EXECUTED
4ef4c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
4ef52: 42a7 clrl %sp@- <== NOT EXECUTED
4ef54: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4ef56: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
4ef5a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef5c: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4ef60: 4eb9 0005 02a8 jsr 502a8 <_CORE_message_queue_Submit> <== NOT EXECUTED
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
4ef66: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
4ef6a: 2400 movel %d0,%d2 <== NOT EXECUTED
4ef6c: 4eb9 0005 1dde jsr 51dde <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
4ef72: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4ef74: 4eb9 0004 efa4 jsr 4efa4 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef7a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
4ef7e: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef80: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4ef84: 4e5e unlk %fp <== NOT EXECUTED
4ef86: 4e75 rts <== NOT EXECUTED
4ef88: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ef8c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ef8e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4ef92: 4e5e unlk %fp <== NOT EXECUTED
4ef94: 4e75 rts <== NOT EXECUTED
4ef96: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
4ef9a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ef9c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
4efa0: 4e5e unlk %fp <== NOT EXECUTED
000566f8 <rtems_message_queue_urgent>:
rtems_status_code rtems_message_queue_urgent(
rtems_id id,
const void *buffer,
size_t size
)
{
566f8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
566fc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
566fe: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
56702: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56704: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
56708: 676c beqs 56776 <rtems_message_queue_urgent+0x7e><== NOT EXECUTED
5670a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5670e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
56710: 4879 0007 d434 pea 7d434 <_Message_queue_Information> <== NOT EXECUTED
56716: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_message_queue = _Message_queue_Get( id, &location );
switch ( location ) {
5671c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56720: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56724: 6642 bnes 56768 <rtems_message_queue_urgent+0x70><== NOT EXECUTED
CORE_message_queue_API_mp_support_callout api_message_queue_mp_support,
bool wait,
Watchdog_Interval timeout
)
{
return _CORE_message_queue_Submit(
56726: 42a7 clrl %sp@- <== NOT EXECUTED
56728: 2040 moveal %d0,%a0 <== NOT EXECUTED
5672a: 42a7 clrl %sp@- <== NOT EXECUTED
5672c: 2f3c 8000 0000 movel #-2147483648,%sp@- <== NOT EXECUTED
56732: 42a7 clrl %sp@- <== NOT EXECUTED
56734: 2f03 movel %d3,%sp@- <== NOT EXECUTED
56736: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
5673a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
5673c: 4868 0014 pea %a0@(20) <== NOT EXECUTED
56740: 4eb9 0005 9ff8 jsr 59ff8 <_CORE_message_queue_Submit> <== NOT EXECUTED
id,
MESSAGE_QUEUE_MP_HANDLER,
false, /* sender does not block */
0 /* no timeout */
);
_Thread_Enable_dispatch();
56746: 4fef 0020 lea %sp@(32),%sp <== NOT EXECUTED
5674a: 2400 movel %d0,%d2 <== NOT EXECUTED
5674c: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
56752: 2f02 movel %d2,%sp@- <== NOT EXECUTED
56754: 4eb9 0005 66e0 jsr 566e0 <_Message_queue_Translate_core_message_queue_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5675a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
/*
* Since this API does not allow for blocking sends, we can directly
* return the returned status.
*/
return _Message_queue_Translate_core_message_queue_return_code(status);
5675e: 588f addql #4,%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56760: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
56764: 4e5e unlk %fp <== NOT EXECUTED
56766: 4e75 rts <== NOT EXECUTED
56768: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5676c: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5676e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
56772: 4e5e unlk %fp <== NOT EXECUTED
56774: 4e75 rts <== NOT EXECUTED
56776: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Message_queue_Control *the_message_queue;
Objects_Locations location;
CORE_message_queue_Status status;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
5677a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5677c: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
56780: 4e5e unlk %fp <== NOT EXECUTED
00047e80 <rtems_object_api_maximum_class>:
#include <rtems/rtems/types.h>
int rtems_object_api_maximum_class(
int api
)
{
47e80: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_API_maximum_class(api);
}
47e84: 4e5e unlk %fp <== NOT EXECUTED
int rtems_object_api_maximum_class(
int api
)
{
return _Objects_API_maximum_class(api);
47e86: 4ef9 0004 98e8 jmp 498e8 <_Objects_API_maximum_class> <== NOT EXECUTED
00047e8c <rtems_object_api_minimum_class>:
uint32_t api
)
{
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
47e8c: 7203 moveq #3,%d1 <== NOT EXECUTED
#include <rtems/rtems/types.h>
uint32_t rtems_object_api_minimum_class(
uint32_t api
)
{
47e8e: 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 )
47e92: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
47e96: 5380 subql #1,%d0 <== NOT EXECUTED
if ( _Objects_Is_api_valid( api ) )
return 1;
return -1;
47e98: b280 cmpl %d0,%d1 <== NOT EXECUTED
47e9a: 53c0 sls %d0 <== NOT EXECUTED
47e9c: 49c0 extbl %d0 <== NOT EXECUTED
}
47e9e: 123c 0001 moveb #1,%d1 <== NOT EXECUTED
47ea2: 4e5e unlk %fp <== NOT EXECUTED
47ea4: 8081 orl %d1,%d0 <== NOT EXECUTED
00047ea8 <rtems_object_get_api_class_name>:
)
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
47ea8: 7001 moveq #1,%d0 <== NOT EXECUTED
const char *rtems_object_get_api_class_name(
int the_api,
int the_class
)
{
47eaa: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47eae: 222e 0008 movel %fp@(8),%d1 <== NOT EXECUTED
47eb2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
47eb4: b081 cmpl %d1,%d0 <== NOT EXECUTED
47eb6: 673e beqs 47ef6 <rtems_object_get_api_class_name+0x4e><== NOT EXECUTED
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
47eb8: 7402 moveq #2,%d2 <== NOT EXECUTED
#ifdef RTEMS_POSIX_API
else if ( the_api == OBJECTS_POSIX_API )
api_assoc = rtems_object_api_posix_assoc;
#endif
else
return "BAD API";
47eba: 203c 0005 ee5e movel #388702,%d0 <== NOT EXECUTED
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
47ec0: b481 cmpl %d1,%d2 <== NOT EXECUTED
47ec2: 6708 beqs 47ecc <rtems_object_get_api_class_name+0x24><== NOT EXECUTED
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
}
47ec4: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47ec8: 4e5e unlk %fp <== NOT EXECUTED
47eca: 4e75 rts <== NOT EXECUTED
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
else if ( the_api == OBJECTS_CLASSIC_API )
api_assoc = rtems_object_api_classic_assoc;
47ecc: 203c 0005 fe4c movel #392780,%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 );
47ed2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
47ed6: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47ed8: 4eb9 0004 cdf4 jsr 4cdf4 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( class_assoc )
47ede: 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 );
47ee0: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( class_assoc )
return class_assoc->name;
return "BAD CLASS";
47ee2: 203c 0005 ee66 movel #388710,%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 )
47ee8: 4a88 tstl %a0 <== NOT EXECUTED
47eea: 67d8 beqs 47ec4 <rtems_object_get_api_class_name+0x1c><== NOT EXECUTED
return class_assoc->name;
return "BAD CLASS";
}
47eec: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
47ef0: 4e5e unlk %fp <== NOT EXECUTED
#endif
else
return "BAD API";
class_assoc = rtems_assoc_ptr_by_local( api_assoc, the_class );
if ( class_assoc )
return class_assoc->name;
47ef2: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
47ef4: 4e75 rts <== NOT EXECUTED
{
const rtems_assoc_t *api_assoc;
const rtems_assoc_t *class_assoc;
if ( the_api == OBJECTS_INTERNAL_API )
api_assoc = rtems_object_api_internal_assoc;
47ef6: 203c 0005 fe34 movel #392756,%d0 <== NOT EXECUTED
47efc: 60d4 bras 47ed2 <rtems_object_get_api_class_name+0x2a><== NOT EXECUTED
...
00047f00 <rtems_object_get_api_name>:
};
const char *rtems_object_get_api_name(
int api
)
{
47f00: 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 );
47f04: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47f08: 4879 0005 fec4 pea 5fec4 <rtems_objects_api_assoc> <== NOT EXECUTED
47f0e: 4eb9 0004 cdf4 jsr 4cdf4 <rtems_assoc_ptr_by_local> <== NOT EXECUTED
if ( api_assoc )
47f14: 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 );
47f16: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( api_assoc )
return api_assoc->name;
return "BAD CLASS";
47f18: 203c 0005 ee66 movel #388710,%d0 <== NOT EXECUTED
)
{
const rtems_assoc_t *api_assoc;
api_assoc = rtems_assoc_ptr_by_local( rtems_objects_api_assoc, api );
if ( api_assoc )
47f1e: 4a88 tstl %a0 <== NOT EXECUTED
47f20: 6702 beqs 47f24 <rtems_object_get_api_name+0x24> <== NOT EXECUTED
return api_assoc->name;
47f22: 2010 movel %a0@,%d0 <== NOT EXECUTED
return "BAD CLASS";
}
47f24: 4e5e unlk %fp <== NOT EXECUTED
00047f68 <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
)
{
47f68: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
47f6c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47f6e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
47f72: 2f02 movel %d2,%sp@- <== NOT EXECUTED
int i;
/*
* Validate parameters and look up information structure.
*/
if ( !info )
47f74: 4a8a tstl %a2 <== NOT EXECUTED
47f76: 6768 beqs 47fe0 <rtems_object_get_class_information+0x78><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
47f78: 3f2e 000e movew %fp@(14),%sp@- <== NOT EXECUTED
47f7c: 4267 clrw %sp@- <== NOT EXECUTED
47f7e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47f82: 4eb9 0004 9c80 jsr 49c80 <_Objects_Get_information> <== NOT EXECUTED
if ( !obj_info )
47f88: 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 );
47f8a: 2040 moveal %d0,%a0 <== NOT EXECUTED
if ( !obj_info )
47f8c: 4a80 tstl %d0 <== NOT EXECUTED
47f8e: 675e beqs 47fee <rtems_object_get_class_information+0x86><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
47f90: 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;
47f94: 4282 clrl %d2 <== NOT EXECUTED
/*
* Return information about this object class to the user.
*/
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
47f96: 2568 000a 0004 movel %a0@(10),%a2@(4) <== NOT EXECUTED
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
47f9c: 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;
47fa0: 1568 0010 000c moveb %a0@(16),%a2@(12) <== NOT EXECUTED
info->maximum = obj_info->maximum;
47fa6: 2542 0008 movel %d2,%a2@(8) <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47faa: 6750 beqs 47ffc <rtems_object_get_class_information+0x94><== NOT EXECUTED
47fac: 2068 0018 moveal %a0@(24),%a0 <== NOT EXECUTED
47fb0: 7201 moveq #1,%d1 <== NOT EXECUTED
47fb2: 7001 moveq #1,%d0 <== NOT EXECUTED
47fb4: 93c9 subal %a1,%a1 <== NOT EXECUTED
47fb6: 5280 addql #1,%d0 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
47fb8: 4ab0 1c00 tstl %a0@(00000000,%d1:l:4) <== NOT EXECUTED
47fbc: 6718 beqs 47fd6 <rtems_object_get_class_information+0x6e><== NOT EXECUTED
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47fbe: 2200 movel %d0,%d1 <== NOT EXECUTED
47fc0: b082 cmpl %d2,%d0 <== NOT EXECUTED
47fc2: 63f2 blss 47fb6 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
47fc4: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47fc8: 4280 clrl %d0 <== NOT EXECUTED
}
47fca: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47fce: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fd2: 4e5e unlk %fp <== NOT EXECUTED
47fd4: 4e75 rts <== NOT EXECUTED
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
47fd6: 5289 addql #1,%a1 <== NOT EXECUTED
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47fd8: 2200 movel %d0,%d1 <== NOT EXECUTED
47fda: b082 cmpl %d2,%d0 <== NOT EXECUTED
47fdc: 63d8 blss 47fb6 <rtems_object_get_class_information+0x4e><== NOT EXECUTED
47fde: 60e4 bras 47fc4 <rtems_object_get_class_information+0x5c><== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fe0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
/*
* Validate parameters and look up information structure.
*/
if ( !info )
return RTEMS_INVALID_ADDRESS;
47fe4: 7009 moveq #9,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47fe6: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47fea: 4e5e unlk %fp <== NOT EXECUTED
47fec: 4e75 rts <== NOT EXECUTED
47fee: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
if ( !info )
return RTEMS_INVALID_ADDRESS;
obj_info = _Objects_Get_information( the_api, the_class );
if ( !obj_info )
return RTEMS_INVALID_NUMBER;
47ff2: 700a moveq #10,%d0 <== NOT EXECUTED
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
}
47ff4: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
47ff8: 4e5e unlk %fp <== NOT EXECUTED
47ffa: 4e75 rts <== NOT EXECUTED
info->minimum_id = obj_info->minimum_id;
info->maximum_id = obj_info->maximum_id;
info->auto_extend = obj_info->auto_extend;
info->maximum = obj_info->maximum;
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
47ffc: 93c9 subal %a1,%a1 <== NOT EXECUTED
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
return RTEMS_SUCCESSFUL;
47ffe: 4280 clrl %d0 <== NOT EXECUTED
for ( unallocated=0, i=1 ; i <= info->maximum ; i++ )
if ( !obj_info->local_table[i] )
unallocated++;
info->unallocated = unallocated;
48000: 2549 000e movel %a1,%a2@(14) <== NOT EXECUTED
48004: 60c4 bras 47fca <rtems_object_get_class_information+0x62><== NOT EXECUTED
...
000477ec <rtems_object_get_classic_name>:
rtems_status_code rtems_object_get_classic_name(
rtems_id id,
rtems_name *name
)
{
477ec: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
477f0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
477f2: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
477f6: 4a8a tstl %a2 <== NOT EXECUTED
477f8: 6726 beqs 47820 <rtems_object_get_classic_name+0x34><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
status = _Objects_Id_to_name( id, &name_u );
477fa: 486e fffc pea %fp@(-4) <== NOT EXECUTED
477fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47802: 4eb9 0004 94e8 jsr 494e8 <_Objects_Id_to_name> <== NOT EXECUTED
*name = name_u.name_u32;
47808: 24ae fffc movel %fp@(-4),%a2@ <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
4780c: 41f9 0005 dca0 lea 5dca0 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
47812: 508f addql #8,%sp <== NOT EXECUTED
}
47814: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
47818: 4e5e unlk %fp <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
status = _Objects_Id_to_name( id, &name_u );
*name = name_u.name_u32;
return _Status_Object_name_errors_to_status[ status ];
4781a: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
}
4781e: 4e75 rts <== NOT EXECUTED
47820: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
Objects_Name_or_id_lookup_errors status;
Objects_Name name_u;
if ( !name )
return RTEMS_INVALID_ADDRESS;
47824: 7009 moveq #9,%d0 <== NOT EXECUTED
status = _Objects_Id_to_name( id, &name_u );
*name = name_u.name_u32;
return _Status_Object_name_errors_to_status[ status ];
}
47826: 4e5e unlk %fp <== NOT EXECUTED
...
00047830 <rtems_object_get_name>:
char *rtems_object_get_name(
Objects_Id id,
size_t length,
char *name
)
{
47830: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_name_as_string( id, length, name );
}
47834: 4e5e unlk %fp <== NOT EXECUTED
Objects_Id id,
size_t length,
char *name
)
{
return _Objects_Get_name_as_string( id, length, name );
47836: 4ef9 0004 97bc jmp 497bc <_Objects_Get_name_as_string> <== NOT EXECUTED
00048014 <rtems_object_id_api_maximum>:
#undef rtems_object_id_api_maximum
int rtems_object_id_api_maximum(void)
{
return OBJECTS_APIS_LAST;
}
48014: 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)
{
48016: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_APIS_LAST;
}
4801a: 4e5e unlk %fp <== NOT EXECUTED
...
00048020 <rtems_object_id_api_minimum>:
#undef rtems_object_id_api_minimum
int rtems_object_id_api_minimum(void)
{
return OBJECTS_INTERNAL_API;
}
48020: 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)
{
48022: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return OBJECTS_INTERNAL_API;
}
48026: 4e5e unlk %fp <== NOT EXECUTED
...
0004802c <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);
4802c: 4280 clrl %d0 <== NOT EXECUTED
int rtems_object_id_get_api(
rtems_id id
)
{
return _Objects_Get_API( id );
}
4802e: 7207 moveq #7,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_api
int rtems_object_id_get_api(
rtems_id id
)
{
48030: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48034: 102e 0008 moveb %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_API( id );
}
48038: 4e5e unlk %fp <== NOT EXECUTED
4803a: c081 andl %d1,%d0 <== NOT EXECUTED
...
00048040 <rtems_object_id_get_class>:
int rtems_object_id_get_class(
rtems_id id
)
{
return _Objects_Get_class( id );
}
48040: 721b moveq #27,%d1 <== NOT EXECUTED
#undef rtems_object_id_get_class
int rtems_object_id_get_class(
rtems_id id
)
{
48042: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
48046: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
return _Objects_Get_class( id );
}
4804a: 4e5e unlk %fp <== NOT EXECUTED
4804c: e2a8 lsrl %d1,%d0 <== NOT EXECUTED
00048050 <rtems_object_id_get_index>:
int rtems_object_id_get_index(
rtems_id id
)
{
return _Objects_Get_index( id );
}
48050: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_index
int rtems_object_id_get_index(
rtems_id id
)
{
48052: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_index( id );
}
48056: 302e 000a movew %fp@(10),%d0 <== NOT EXECUTED
4805a: 4e5e unlk %fp <== NOT EXECUTED
...
00048060 <rtems_object_id_get_node>:
int rtems_object_id_get_node(
rtems_id id
)
{
return _Objects_Get_node( id );
}
48060: 4280 clrl %d0 <== NOT EXECUTED
#undef rtems_object_id_get_node
int rtems_object_id_get_node(
rtems_id id
)
{
48062: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Objects_Get_node( id );
}
48066: 102e 0009 moveb %fp@(9),%d0 <== NOT EXECUTED
4806a: 4e5e unlk %fp <== NOT EXECUTED
...
00048070 <rtems_object_set_name>:
*/
rtems_status_code rtems_object_set_name(
rtems_id id,
const char *name
)
{
48070: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
48074: 48d7 001c moveml %d2-%d4,%sp@ <== NOT EXECUTED
48078: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
4807c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
Objects_Information *information;
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
48080: 6764 beqs 480e6 <rtems_object_set_name+0x76> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
48082: 4a83 tstl %d3 <== NOT EXECUTED
48084: 6754 beqs 480da <rtems_object_set_name+0x6a> <== NOT EXECUTED
information = _Objects_Get_information_id( tmpId );
48086: 2f03 movel %d3,%sp@- <== NOT EXECUTED
48088: 4eb9 0004 9c54 jsr 49c54 <_Objects_Get_information_id> <== NOT EXECUTED
if ( !information )
4808e: 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 );
48090: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( !information )
48092: 673a beqs 480ce <rtems_object_set_name+0x5e> <== NOT EXECUTED
return RTEMS_INVALID_ID;
the_object = _Objects_Get( information, tmpId, &location );
48094: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48098: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4809a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4809c: 4eb9 0004 9e28 jsr 49e28 <_Objects_Get> <== NOT EXECUTED
switch ( location ) {
480a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
480a6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
480aa: 6622 bnes 480ce <rtems_object_set_name+0x5e> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Set_name( information, the_object, name );
480ac: 2f04 movel %d4,%sp@- <== NOT EXECUTED
480ae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
480b0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
480b2: 4eb9 0004 a038 jsr 4a038 <_Objects_Set_name> <== NOT EXECUTED
_Thread_Enable_dispatch();
480b8: 4eb9 0004 aa6a jsr 4aa6a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
480be: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
480c2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
480c4: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
480ca: 4e5e unlk %fp <== NOT EXECUTED
480cc: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
480ce: 7004 moveq #4,%d0 <== NOT EXECUTED
}
480d0: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
480d6: 4e5e unlk %fp <== NOT EXECUTED
480d8: 4e75 rts <== NOT EXECUTED
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
480da: 2079 0006 1770 moveal 61770 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
480e0: 2628 0008 movel %a0@(8),%d3 <== NOT EXECUTED
480e4: 60a0 bras 48086 <rtems_object_set_name+0x16> <== NOT EXECUTED
Objects_Locations location;
Objects_Control *the_object;
Objects_Id tmpId;
if ( !name )
return RTEMS_INVALID_ADDRESS;
480e6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
480e8: 4cee 001c fff0 moveml %fp@(-16),%d2-%d4 <== NOT EXECUTED
480ee: 4e5e unlk %fp <== NOT EXECUTED
...
00056784 <rtems_partition_create>:
uint32_t length,
uint32_t buffer_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
56784: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
56788: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@ <== NOT EXECUTED
5678c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
56790: 2a2e 000c movel %fp@(12),%d5 <== NOT EXECUTED
56794: 282e 0010 movel %fp@(16),%d4 <== NOT EXECUTED
56798: 262e 0014 movel %fp@(20),%d3 <== NOT EXECUTED
5679c: 246e 001c moveal %fp@(28),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
567a0: 4a82 tstl %d2 <== NOT EXECUTED
567a2: 673a beqs 567de <rtems_partition_create+0x5a> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
567a4: 4a85 tstl %d5 <== NOT EXECUTED
567a6: 671e beqs 567c6 <rtems_partition_create+0x42> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
567a8: 4a8a tstl %a2 <== NOT EXECUTED
567aa: 671a beqs 567c6 <rtems_partition_create+0x42> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
567ac: 4a84 tstl %d4 <== NOT EXECUTED
567ae: 6722 beqs 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED
567b0: 4a83 tstl %d3 <== NOT EXECUTED
567b2: 671e beqs 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED
567b4: b684 cmpl %d4,%d3 <== NOT EXECUTED
567b6: 621a bhis 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Partition_Is_buffer_size_aligned (
uint32_t buffer_size
)
{
return ((buffer_size % CPU_PARTITION_ALIGNMENT) == 0);
567b8: 7003 moveq #3,%d0 <== NOT EXECUTED
567ba: c083 andl %d3,%d0 <== NOT EXECUTED
567bc: 6614 bnes 567d2 <rtems_partition_create+0x4e> <== NOT EXECUTED
)
{
#if (CPU_ALIGNMENT == 0)
return true;
#else
return (((uintptr_t)address % CPU_ALIGNMENT) == 0);
567be: 103c 0003 moveb #3,%d0 <== NOT EXECUTED
567c2: c085 andl %d5,%d0 <== NOT EXECUTED
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
if ( !_Addresses_Is_aligned( starting_address ) )
567c4: 6724 beqs 567ea <rtems_partition_create+0x66> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
567c6: 7009 moveq #9,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567c8: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
567ce: 4e5e unlk %fp <== NOT EXECUTED
567d0: 4e75 rts <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( length == 0 || buffer_size == 0 || length < buffer_size ||
!_Partition_Is_buffer_size_aligned( buffer_size ) )
return RTEMS_INVALID_SIZE;
567d2: 7008 moveq #8,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567d4: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
567da: 4e5e unlk %fp <== NOT EXECUTED
567dc: 4e75 rts <== NOT EXECUTED
)
{
register Partition_Control *the_partition;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
567de: 7003 moveq #3,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
567e0: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
567e6: 4e5e unlk %fp <== NOT EXECUTED
567e8: 4e75 rts <== NOT EXECUTED
567ea: 2039 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
567f0: 5280 addql #1,%d0 <== NOT EXECUTED
567f2: 23c0 0007 d234 movel %d0,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* This function allocates a partition control block from
* the inactive chain of free partition control blocks.
*/
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Allocate ( void )
{
return (Partition_Control *) _Objects_Allocate( &_Partition_Information );
567f8: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
567fe: 4eb9 0005 b350 jsr 5b350 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
56804: 588f addql #4,%sp <== NOT EXECUTED
56806: 2640 moveal %d0,%a3 <== NOT EXECUTED
56808: 4a80 tstl %d0 <== NOT EXECUTED
5680a: 6758 beqs 56864 <rtems_partition_create+0xe0> <== NOT EXECUTED
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
the_partition->length = length;
5680c: 2744 0014 movel %d4,%a3@(20) <== NOT EXECUTED
the_partition->buffer_size = buffer_size;
the_partition->attribute_set = attribute_set;
56810: 276e 0018 001c movel %fp@(24),%a3@(28) <== NOT EXECUTED
the_partition->number_of_used_blocks = 0;
_Chain_Initialize( &the_partition->Memory, starting_address,
56816: 4c43 4004 remul %d3,%d4,%d4 <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_partition->starting_address = starting_address;
5681a: 2745 0010 movel %d5,%a3@(16) <== NOT EXECUTED
the_partition->length = length;
the_partition->buffer_size = buffer_size;
5681e: 2743 0018 movel %d3,%a3@(24) <== NOT EXECUTED
the_partition->attribute_set = attribute_set;
the_partition->number_of_used_blocks = 0;
56822: 42ab 0020 clrl %a3@(32) <== NOT EXECUTED
_Chain_Initialize( &the_partition->Memory, starting_address,
56826: 2f03 movel %d3,%sp@- <== NOT EXECUTED
56828: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5682a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5682c: 486b 0024 pea %a3@(36) <== NOT EXECUTED
56830: 4eb9 0005 9c90 jsr 59c90 <_Chain_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
56836: 202b 0008 movel %a3@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
5683a: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
5683c: 2079 0007 d0ec moveal 7d0ec <_Partition_Information+0x18>,%a0<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
56842: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
56844: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
56848: 2742 000c movel %d2,%a3@(12) <== NOT EXECUTED
&_Partition_Information,
&the_partition->Object,
(Objects_Name) name
);
*id = the_partition->Object.id;
5684c: 2480 movel %d0,%a2@ <== NOT EXECUTED
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
5684e: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
56854: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
56858: 4280 clrl %d0 <== NOT EXECUTED
}
5685a: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
56860: 4e5e unlk %fp <== NOT EXECUTED
56862: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* prevents deletion */
the_partition = _Partition_Allocate();
if ( !the_partition ) {
_Thread_Enable_dispatch();
56864: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
5686a: 7005 moveq #5,%d0 <== NOT EXECUTED
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
5686c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
56872: 4e5e unlk %fp <== NOT EXECUTED
...
00056878 <rtems_partition_delete>:
*/
rtems_status_code rtems_partition_delete(
rtems_id id
)
{
56878: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
5687c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56880: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56884: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
5688a: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
56890: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56894: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56898: 6706 beqs 568a0 <rtems_partition_delete+0x28> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
5689a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5689c: 4e5e unlk %fp <== NOT EXECUTED
5689e: 4e75 rts <== NOT EXECUTED
the_partition = _Partition_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_partition->number_of_used_blocks == 0 ) {
568a0: 2040 moveal %d0,%a0 <== NOT EXECUTED
568a2: 4aa8 0020 tstl %a0@(32) <== NOT EXECUTED
568a6: 670c beqs 568b4 <rtems_partition_delete+0x3c> <== NOT EXECUTED
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
568a8: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_RESOURCE_IN_USE;
568ae: 700c moveq #12,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
568b0: 4e5e unlk %fp <== NOT EXECUTED
568b2: 4e75 rts <== NOT EXECUTED
the_partition = _Partition_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_partition->number_of_used_blocks == 0 ) {
_Objects_Close( &_Partition_Information, &the_partition->Object );
568b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
568b6: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
568bc: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
568c0: 4eb9 0005 b3e0 jsr 5b3e0 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Partition_Free (
Partition_Control *the_partition
)
{
_Objects_Free( &_Partition_Information, &the_partition->Object );
568c6: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
568ca: 2f00 movel %d0,%sp@- <== NOT EXECUTED
568cc: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
568d2: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
568d8: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
568de: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
568e2: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
568e4: 4e5e unlk %fp <== NOT EXECUTED
000568e8 <rtems_partition_get_buffer>:
rtems_status_code rtems_partition_get_buffer(
rtems_id id,
void **buffer
)
{
568e8: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
568ec: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
568f0: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
568f4: 4a8a tstl %a2 <== NOT EXECUTED
568f6: 6754 beqs 5694c <rtems_partition_get_buffer+0x64><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
568f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
568fc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56900: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
56906: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
5690c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56910: 2640 moveal %d0,%a3 <== NOT EXECUTED
56912: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56916: 6628 bnes 56940 <rtems_partition_get_buffer+0x58><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (
Partition_Control *the_partition
)
{
return _Chain_Get( &the_partition->Memory );
56918: 486b 0024 pea %a3@(36) <== NOT EXECUTED
5691c: 4eb9 0005 9c54 jsr 59c54 <_Chain_Get> <== NOT EXECUTED
case OBJECTS_LOCAL:
the_buffer = _Partition_Allocate_buffer( the_partition );
if ( the_buffer ) {
56922: 588f addql #4,%sp <== NOT EXECUTED
56924: 2400 movel %d0,%d2 <== NOT EXECUTED
56926: 6730 beqs 56958 <rtems_partition_get_buffer+0x70><== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
56928: 52ab 0020 addql #1,%a3@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
5692c: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
56932: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_LOCAL:
the_buffer = _Partition_Allocate_buffer( the_partition );
if ( the_buffer ) {
the_partition->number_of_used_blocks += 1;
_Thread_Enable_dispatch();
*buffer = the_buffer;
56934: 2482 movel %d2,%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56936: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
5693c: 4e5e unlk %fp <== NOT EXECUTED
5693e: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56940: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56942: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
56948: 4e5e unlk %fp <== NOT EXECUTED
5694a: 4e75 rts <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
void *the_buffer;
if ( !buffer )
return RTEMS_INVALID_ADDRESS;
5694c: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5694e: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
56954: 4e5e unlk %fp <== NOT EXECUTED
56956: 4e75 rts <== NOT EXECUTED
the_partition->number_of_used_blocks += 1;
_Thread_Enable_dispatch();
*buffer = the_buffer;
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56958: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_UNSATISFIED;
5695e: 700d moveq #13,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56960: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
56966: 4e5e unlk %fp <== NOT EXECUTED
...
0005696c <rtems_partition_ident>:
rtems_status_code rtems_partition_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
5696c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32( &_Partition_Information, name, node, id );
56970: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
56974: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
56978: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5697c: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
56982: 4eb9 0005 b9d8 jsr 5b9d8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
56988: 41f9 0007 6870 lea 76870 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
5698e: 4e5e unlk %fp <== NOT EXECUTED
56990: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00056998 <rtems_partition_return_buffer>:
rtems_status_code rtems_partition_return_buffer(
rtems_id id,
void *buffer
)
{
56998: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5699c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5699e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Partition_Control *)
_Objects_Get( &_Partition_Information, id, location );
569a0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
569a4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
569a8: 4879 0007 d0d4 pea 7d0d4 <_Partition_Information> <== NOT EXECUTED
569ae: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
569b2: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
register Partition_Control *the_partition;
Objects_Locations location;
the_partition = _Partition_Get( id, &location );
switch ( location ) {
569b8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
569bc: 2440 moveal %d0,%a2 <== NOT EXECUTED
569be: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
569c2: 670e beqs 569d2 <rtems_partition_return_buffer+0x3a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
569c4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
569c8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
569ca: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
569ce: 4e5e unlk %fp <== NOT EXECUTED
569d0: 4e75 rts <== NOT EXECUTED
)
{
void *starting;
void *ending;
starting = the_partition->starting_address;
569d2: 202a 0010 movel %a2@(16),%d0 <== NOT EXECUTED
ending = _Addresses_Add_offset( starting, the_partition->length );
569d6: 222a 0014 movel %a2@(20),%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
569da: b082 cmpl %d2,%d0 <== NOT EXECUTED
569dc: 623c bhis 56a1a <rtems_partition_return_buffer+0x82><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
569de: d280 addl %d0,%d1 <== NOT EXECUTED
const void *address,
const void *base,
const void *limit
)
{
return (address >= base && address <= limit);
569e0: b282 cmpl %d2,%d1 <== NOT EXECUTED
569e2: 6536 bcss 56a1a <rtems_partition_return_buffer+0x82><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
569e4: 2202 movel %d2,%d1 <== NOT EXECUTED
569e6: 9280 subl %d0,%d1 <== NOT EXECUTED
569e8: 2001 movel %d1,%d0 <== NOT EXECUTED
offset = (uint32_t) _Addresses_Subtract(
the_buffer,
the_partition->starting_address
);
return ((offset % the_partition->buffer_size) == 0);
569ea: 4c6a 0001 0018 remul %a2@(24),%d1,%d0 <== NOT EXECUTED
starting = the_partition->starting_address;
ending = _Addresses_Add_offset( starting, the_partition->length );
return (
_Addresses_Is_in_range( the_buffer, starting, ending ) &&
569f0: 4a81 tstl %d1 <== NOT EXECUTED
569f2: 6626 bnes 56a1a <rtems_partition_return_buffer+0x82><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (
Partition_Control *the_partition,
Chain_Node *the_buffer
)
{
_Chain_Append( &the_partition->Memory, the_buffer );
569f4: 2f02 movel %d2,%sp@- <== NOT EXECUTED
569f6: 486a 0024 pea %a2@(36) <== NOT EXECUTED
569fa: 4eb9 0005 9bf4 jsr 59bf4 <_Chain_Append> <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
56a00: 53aa 0020 subql #1,%a2@(32) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a04: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a0a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56a0e: 508f addql #8,%sp <== NOT EXECUTED
56a10: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a12: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
56a16: 4e5e unlk %fp <== NOT EXECUTED
56a18: 4e75 rts <== NOT EXECUTED
_Partition_Free_buffer( the_partition, buffer );
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
56a1a: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a20: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
the_partition->number_of_used_blocks -= 1;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
56a24: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a26: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
56a2a: 4e5e unlk %fp <== NOT EXECUTED
...
00055c80 <rtems_port_create>:
void *internal_start,
void *external_start,
uint32_t length,
rtems_id *id
)
{
55c80: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
55c84: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
55c88: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
55c8c: 282e 000c movel %fp@(12),%d4 <== NOT EXECUTED
55c90: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
55c94: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
55c98: 4a82 tstl %d2 <== NOT EXECUTED
55c9a: 671a beqs 55cb6 <rtems_port_create+0x36> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
55c9c: 4a8a tstl %a2 <== NOT EXECUTED
55c9e: 670a beqs 55caa <rtems_port_create+0x2a> <== NOT EXECUTED
* id - port id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_port_create(
55ca0: 2003 movel %d3,%d0 <== NOT EXECUTED
55ca2: 7203 moveq #3,%d1 <== NOT EXECUTED
55ca4: 8084 orl %d4,%d0 <== NOT EXECUTED
55ca6: c081 andl %d1,%d0 <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !_Addresses_Is_aligned( internal_start ) ||
55ca8: 6718 beqs 55cc2 <rtems_port_create+0x42> <== NOT EXECUTED
!_Addresses_Is_aligned( external_start ) )
return RTEMS_INVALID_ADDRESS;
55caa: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55cac: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
55cb2: 4e5e unlk %fp <== NOT EXECUTED
55cb4: 4e75 rts <== NOT EXECUTED
)
{
register Dual_ported_memory_Control *the_port;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
55cb6: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55cb8: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
55cbe: 4e5e unlk %fp <== NOT EXECUTED
55cc0: 4e75 rts <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
55cc2: 2039 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
55cc8: 5280 addql #1,%d0 <== NOT EXECUTED
55cca: 23c0 0007 d234 movel %d0,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE Dual_ported_memory_Control
*_Dual_ported_memory_Allocate ( void )
{
return (Dual_ported_memory_Control *)
_Objects_Allocate( &_Dual_ported_memory_Information );
55cd0: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55cd6: 4eb9 0005 b350 jsr 5b350 <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
55cdc: 588f addql #4,%sp <== NOT EXECUTED
55cde: 2040 moveal %d0,%a0 <== NOT EXECUTED
55ce0: 4a80 tstl %d0 <== NOT EXECUTED
55ce2: 673c beqs 55d20 <rtems_port_create+0xa0> <== NOT EXECUTED
return RTEMS_TOO_MANY;
}
the_port->internal_base = internal_start;
the_port->external_base = external_start;
the_port->length = length - 1;
55ce4: 222e 0014 movel %fp@(20),%d1 <== NOT EXECUTED
55ce8: 5381 subql #1,%d1 <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
55cea: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
55cee: 2141 0018 movel %d1,%a0@(24) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55cf2: 4281 clrl %d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
55cf4: 2279 0007 d0b4 moveal 7d0b4 <_Dual_ported_memory_Information+0x18>,%a1<== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
55cfa: 3200 movew %d0,%d1 <== NOT EXECUTED
if ( !the_port ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_port->internal_base = internal_start;
55cfc: 2144 0010 movel %d4,%a0@(16) <== NOT EXECUTED
the_port->external_base = external_start;
55d00: 2143 0014 movel %d3,%a0@(20) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
55d04: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
55d08: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Dual_ported_memory_Information,
&the_port->Object,
(Objects_Name) name
);
*id = the_port->Object.id;
55d0c: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
55d0e: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
55d14: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
(Objects_Name) name
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
55d1a: 4280 clrl %d0 <== NOT EXECUTED
}
55d1c: 4e5e unlk %fp <== NOT EXECUTED
55d1e: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_port = _Dual_ported_memory_Allocate();
if ( !the_port ) {
_Thread_Enable_dispatch();
55d20: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
55d26: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_port->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
55d28: 4cee 041c fff0 moveml %fp@(-16),%d2-%d4/%a2 <== NOT EXECUTED
55d2e: 4e5e unlk %fp <== NOT EXECUTED
...
00055d34 <rtems_port_delete>:
*/
rtems_status_code rtems_port_delete(
rtems_id id
)
{
55d34: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
55d38: 486e fffc pea %fp@(-4) <== NOT EXECUTED
55d3c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55d40: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d46: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55d4c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
55d50: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
55d54: 6634 bnes 55d8a <rtems_port_delete+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Dual_ported_memory_Information, &the_port->Object );
55d56: 2f00 movel %d0,%sp@- <== NOT EXECUTED
55d58: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d5e: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
55d62: 4eb9 0005 b3e0 jsr 5b3e0 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Dual_ported_memory_Free (
Dual_ported_memory_Control *the_port
)
{
_Objects_Free( &_Dual_ported_memory_Information, &the_port->Object );
55d68: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
55d6c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
55d6e: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55d74: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
_Dual_ported_memory_Free( the_port );
_Thread_Enable_dispatch();
55d7a: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55d80: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
55d84: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55d86: 4e5e unlk %fp <== NOT EXECUTED
55d88: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55d8a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55d8c: 4e5e unlk %fp <== NOT EXECUTED
00055d90 <rtems_port_external_to_internal>:
rtems_status_code rtems_port_external_to_internal(
rtems_id id,
void *external,
void **internal
)
{
55d90: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
55d94: 2f0a movel %a2,%sp@- <== NOT EXECUTED
55d96: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
55d9a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
55d9c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
55da0: 4a8a tstl %a2 <== NOT EXECUTED
55da2: 6762 beqs 55e06 <rtems_port_external_to_internal+0x76><== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Dual_ported_memory_Control *)
_Objects_Get( &_Dual_ported_memory_Information, id, location );
55da4: 486e fffc pea %fp@(-4) <== NOT EXECUTED
55da8: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55dac: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55db2: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55db8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
55dbc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
55dc0: 6624 bnes 55de6 <rtems_port_external_to_internal+0x56><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
55dc2: 2202 movel %d2,%d1 <== NOT EXECUTED
55dc4: 2040 moveal %d0,%a0 <== NOT EXECUTED
55dc6: 92a8 0014 subl %a0@(20),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( external, the_port->external_base );
if ( ending > the_port->length )
55dca: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED
55dce: 6324 blss 55df4 <rtems_port_external_to_internal+0x64><== NOT EXECUTED
*internal = external;
55dd0: 2482 movel %d2,%a2@ <== NOT EXECUTED
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
55dd2: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55dd8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55dda: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
55dde: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55de2: 4e5e unlk %fp <== NOT EXECUTED
55de4: 4e75 rts <== NOT EXECUTED
55de6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55dea: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55dec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55df0: 4e5e unlk %fp <== NOT EXECUTED
55df2: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55df4: 2040 moveal %d0,%a0 <== NOT EXECUTED
55df6: d2a8 0010 addl %a0@(16),%d1 <== NOT EXECUTED
55dfa: 2481 movel %d1,%a2@ <== NOT EXECUTED
if ( ending > the_port->length )
*internal = external;
else
*internal = _Addresses_Add_offset( the_port->internal_base,
ending );
_Thread_Enable_dispatch();
55dfc: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55e02: 4280 clrl %d0 <== NOT EXECUTED
55e04: 60d4 bras 55dda <rtems_port_external_to_internal+0x4a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e06: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !internal )
return RTEMS_INVALID_ADDRESS;
55e0a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e0c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55e10: 4e5e unlk %fp <== NOT EXECUTED
00055e14 <rtems_port_ident>:
rtems_status_code rtems_port_ident(
rtems_name name,
rtems_id *id
)
{
55e14: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
55e18: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
55e1c: 42a7 clrl %sp@- <== NOT EXECUTED
55e1e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55e22: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55e28: 4eb9 0005 b9d8 jsr 5b9d8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_ALL_NODES,
id
);
return _Status_Object_name_errors_to_status[ status ];
55e2e: 41f9 0007 6870 lea 76870 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
55e34: 4e5e unlk %fp <== NOT EXECUTED
55e36: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00055e3c <rtems_port_internal_to_external>:
rtems_status_code rtems_port_internal_to_external(
rtems_id id,
void *internal,
void **external
)
{
55e3c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
55e40: 2f0a movel %a2,%sp@- <== NOT EXECUTED
55e42: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
55e46: 2f02 movel %d2,%sp@- <== NOT EXECUTED
55e48: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
55e4c: 4a8a tstl %a2 <== NOT EXECUTED
55e4e: 6762 beqs 55eb2 <rtems_port_internal_to_external+0x76><== NOT EXECUTED
55e50: 486e fffc pea %fp@(-4) <== NOT EXECUTED
55e54: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
55e58: 4879 0007 d09c pea 7d09c <_Dual_ported_memory_Information> <== NOT EXECUTED
55e5e: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_port = _Dual_ported_memory_Get( id, &location );
switch ( location ) {
55e64: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
55e68: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
55e6c: 6624 bnes 55e92 <rtems_port_internal_to_external+0x56><== NOT EXECUTED
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (
const void *left,
const void *right
)
{
return (int32_t) ((const char *) left - (const char *) right);
55e6e: 2202 movel %d2,%d1 <== NOT EXECUTED
55e70: 2040 moveal %d0,%a0 <== NOT EXECUTED
55e72: 92a8 0010 subl %a0@(16),%d1 <== NOT EXECUTED
case OBJECTS_LOCAL:
ending = _Addresses_Subtract( internal, the_port->internal_base );
if ( ending > the_port->length )
55e76: b2a8 0018 cmpl %a0@(24),%d1 <== NOT EXECUTED
55e7a: 6324 blss 55ea0 <rtems_port_internal_to_external+0x64><== NOT EXECUTED
*external = internal;
55e7c: 2482 movel %d2,%a2@ <== NOT EXECUTED
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
55e7e: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55e84: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55e86: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
55e8a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55e8e: 4e5e unlk %fp <== NOT EXECUTED
55e90: 4e75 rts <== NOT EXECUTED
55e92: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
55e96: 7004 moveq #4,%d0 <== NOT EXECUTED
}
55e98: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55e9c: 4e5e unlk %fp <== NOT EXECUTED
55e9e: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (
const void *base,
uintptr_t offset
)
{
return (void *)((uintptr_t)base + offset);
55ea0: 2040 moveal %d0,%a0 <== NOT EXECUTED
55ea2: d2a8 0014 addl %a0@(20),%d1 <== NOT EXECUTED
55ea6: 2481 movel %d1,%a2@ <== NOT EXECUTED
if ( ending > the_port->length )
*external = internal;
else
*external = _Addresses_Add_offset( the_port->external_base,
ending );
_Thread_Enable_dispatch();
55ea8: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
55eae: 4280 clrl %d0 <== NOT EXECUTED
55eb0: 60d4 bras 55e86 <rtems_port_internal_to_external+0x4a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55eb2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Dual_ported_memory_Control *the_port;
Objects_Locations location;
uint32_t ending;
if ( !external )
return RTEMS_INVALID_ADDRESS;
55eb6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
55eb8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
55ebc: 4e5e unlk %fp <== NOT EXECUTED
00056a30 <rtems_rate_monotonic_cancel>:
*/
rtems_status_code rtems_rate_monotonic_cancel(
rtems_id id
)
{
56a30: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
56a34: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
56a36: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56a3a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56a3e: 4879 0007 d10c pea 7d10c <_Rate_monotonic_Information> <== NOT EXECUTED
56a44: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
56a4a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56a4e: 2440 moveal %d0,%a2 <== NOT EXECUTED
56a50: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56a54: 670a beqs 56a60 <rtems_rate_monotonic_cancel+0x30><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a56: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56a5a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56a5c: 4e5e unlk %fp <== NOT EXECUTED
56a5e: 4e75 rts <== NOT EXECUTED
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
56a60: 2039 0007 d3fc movel 7d3fc <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
56a66: b0aa 0040 cmpl %a2@(64),%d0 <== NOT EXECUTED
56a6a: 6710 beqs 56a7c <rtems_rate_monotonic_cancel+0x4c><== NOT EXECUTED
_Thread_Enable_dispatch();
56a6c: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a72: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
56a76: 7017 moveq #23,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a78: 4e5e unlk %fp <== NOT EXECUTED
56a7a: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
(void) _Watchdog_Remove( &the_period->Timer );
56a7c: 486a 0010 pea %a2@(16) <== NOT EXECUTED
56a80: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56a86: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
_Thread_Enable_dispatch();
56a8a: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a90: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
(void) _Watchdog_Remove( &the_period->Timer );
the_period->state = RATE_MONOTONIC_INACTIVE;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56a94: 588f addql #4,%sp <== NOT EXECUTED
56a96: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56a98: 4e5e unlk %fp <== NOT EXECUTED
000471a8 <rtems_rate_monotonic_create>:
rtems_status_code rtems_rate_monotonic_create(
rtems_name name,
rtems_id *id
)
{
471a8: 4e56 fff4 linkw %fp,#-12 <== NOT EXECUTED
471ac: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
471b0: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
471b4: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
471b8: 6700 00ae beqw 47268 <rtems_rate_monotonic_create+0xc0><== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !id )
471bc: 4a8a tstl %a2 <== NOT EXECUTED
471be: 6700 00c6 beqw 47286 <rtems_rate_monotonic_create+0xde><== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
471c2: 2039 0006 06a0 movel 606a0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
471c8: 5280 addql #1,%d0 <== NOT EXECUTED
471ca: 23c0 0006 06a0 movel %d0,606a0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* the inactive chain of free period control blocks.
*/
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Allocate( void )
{
return (Rate_monotonic_Control *)
_Objects_Allocate( &_Rate_monotonic_Information );
471d0: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
471d6: 4eb9 0004 933c jsr 4933c <_Objects_Allocate> <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
471dc: 588f addql #4,%sp <== NOT EXECUTED
471de: 2040 moveal %d0,%a0 <== NOT EXECUTED
471e0: 4a80 tstl %d0 <== NOT EXECUTED
471e2: 6700 0090 beqw 47274 <rtems_rate_monotonic_create+0xcc><== NOT EXECUTED
the_period->owner = _Thread_Executing;
the_period->state = RATE_MONOTONIC_INACTIVE;
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
471e6: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
471ea: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED
471ee: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
471f2: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
471f6: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED
if ( !the_period ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
471fa: 47f9 0006 0860 lea 60860 <_Per_CPU_Information+0xc>,%a3 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
47200: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
47204: 4281 clrl %d1 <== NOT EXECUTED
47206: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
if ( !the_period ) {
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
4720a: 2153 0040 movel %a3@,%a0@(64) <== NOT EXECUTED
4720e: 3200 movew %d0,%d1 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
_Watchdog_Initialize( &the_period->Timer, NULL, 0, NULL );
_Rate_monotonic_Reset_statistics( the_period );
47210: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED
47214: 4299 clrl %a1@+ <== NOT EXECUTED
47216: 4299 clrl %a1@+ <== NOT EXECUTED
47218: 4299 clrl %a1@+ <== NOT EXECUTED
4721a: 4291 clrl %a1@ <== NOT EXECUTED
4721c: 227c 7fff ffff moveal #2147483647,%a1 <== NOT EXECUTED
47222: 2149 005c movel %a1,%a0@(92) <== NOT EXECUTED
47226: 2149 0060 movel %a1,%a0@(96) <== NOT EXECUTED
4722a: 2149 0074 movel %a1,%a0@(116) <== NOT EXECUTED
4722e: 2149 0078 movel %a1,%a0@(120) <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
47232: 2279 0006 05c8 moveal 605c8 <_Rate_monotonic_Information+0x18>,%a1<== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_period->owner = _Thread_Executing;
the_period->state = RATE_MONOTONIC_INACTIVE;
47238: 42a8 0038 clrl %a0@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
4723c: 42a8 0018 clrl %a0@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
47240: 42a8 002c clrl %a0@(44) <== NOT EXECUTED
the_watchdog->id = id;
47244: 42a8 0030 clrl %a0@(48) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47248: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
4724c: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
47250: 2142 000c movel %d2,%a0@(12) <== NOT EXECUTED
&_Rate_monotonic_Information,
&the_period->Object,
(Objects_Name) name
);
*id = the_period->Object.id;
47254: 2480 movel %d0,%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47256: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4725c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
(Objects_Name) name
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47262: 4280 clrl %d0 <== NOT EXECUTED
}
47264: 4e5e unlk %fp <== NOT EXECUTED
47266: 4e75 rts <== NOT EXECUTED
)
{
Rate_monotonic_Control *the_period;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
47268: 7003 moveq #3,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4726a: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
47270: 4e5e unlk %fp <== NOT EXECUTED
47272: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_period = _Rate_monotonic_Allocate();
if ( !the_period ) {
_Thread_Enable_dispatch();
47274: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4727a: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4727c: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
47282: 4e5e unlk %fp <== NOT EXECUTED
47284: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
47286: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_period->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47288: 4cee 0c04 fff4 moveml %fp@(-12),%d2/%a2-%a3 <== NOT EXECUTED
4728e: 4e5e unlk %fp <== NOT EXECUTED
...
00056b88 <rtems_rate_monotonic_delete>:
*/
rtems_status_code rtems_rate_monotonic_delete(
rtems_id id
)
{
56b88: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
56b8c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
56b8e: 486e fffc pea %fp@(-4) <== NOT EXECUTED
56b92: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
56b96: 4879 0007 d10c pea 7d10c <_Rate_monotonic_Information> <== NOT EXECUTED
56b9c: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
Rate_monotonic_Control *the_period;
Objects_Locations location;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
56ba2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
56ba6: 2440 moveal %d0,%a2 <== NOT EXECUTED
56ba8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
56bac: 663e bnes 56bec <rtems_rate_monotonic_delete+0x64><== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
56bae: 2f00 movel %d0,%sp@- <== NOT EXECUTED
56bb0: 4879 0007 d10c pea 7d10c <_Rate_monotonic_Information> <== NOT EXECUTED
56bb6: 4eb9 0005 b3e0 jsr 5b3e0 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_period->Timer );
56bbc: 486a 0010 pea %a2@(16) <== NOT EXECUTED
56bc0: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_INACTIVE;
56bc6: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Rate_monotonic_Free (
Rate_monotonic_Control *the_period
)
{
_Objects_Free( &_Rate_monotonic_Information, &the_period->Object );
56bca: 2f0a movel %a2,%sp@- <== NOT EXECUTED
56bcc: 4879 0007 d10c pea 7d10c <_Rate_monotonic_Information> <== NOT EXECUTED
56bd2: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
56bd8: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56bde: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Objects_Close( &_Rate_monotonic_Information, &the_period->Object );
(void) _Watchdog_Remove( &the_period->Timer );
the_period->state = RATE_MONOTONIC_INACTIVE;
_Rate_monotonic_Free( the_period );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
56be2: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
56be6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
56be8: 4e5e unlk %fp <== NOT EXECUTED
56bea: 4e75 rts <== NOT EXECUTED
56bec: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
56bf0: 7004 moveq #4,%d0 <== NOT EXECUTED
}
56bf2: 4e5e unlk %fp <== NOT EXECUTED
...
0004d1e8 <rtems_rate_monotonic_get_statistics>:
rtems_status_code rtems_rate_monotonic_get_statistics(
rtems_id id,
rtems_rate_monotonic_period_statistics *statistics
)
{
4d1e8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4d1ec: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d1ee: 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 )
4d1f2: 4a8a tstl %a2 <== NOT EXECUTED
4d1f4: 6700 00a6 beqw 4d29c <rtems_rate_monotonic_get_statistics+0xb4><== NOT EXECUTED
4d1f8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d1fc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d200: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
4d206: 4eb9 0004 98e8 jsr 498e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4d20c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d210: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d212: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4d216: 667a bnes 4d292 <rtems_rate_monotonic_get_statistics+0xaa><== NOT EXECUTED
case OBJECTS_LOCAL:
dst = statistics;
src = &the_period->Statistics;
dst->count = src->count;
4d218: 24a8 0054 movel %a0@(84),%a2@ <== NOT EXECUTED
dst->missed_count = src->missed_count;
4d21c: 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 );
4d222: 2028 005c movel %a0@(92),%d0 <== NOT EXECUTED
4d226: 2228 0060 movel %a0@(96),%d1 <== NOT EXECUTED
4d22a: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4d22e: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_cpu_time, &dst->max_cpu_time );
4d232: 2028 0064 movel %a0@(100),%d0 <== NOT EXECUTED
4d236: 2228 0068 movel %a0@(104),%d1 <== NOT EXECUTED
4d23a: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4d23e: 2541 0014 movel %d1,%a2@(20) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
4d242: 2028 006c movel %a0@(108),%d0 <== NOT EXECUTED
4d246: 2228 0070 movel %a0@(112),%d1 <== NOT EXECUTED
4d24a: 2540 0018 movel %d0,%a2@(24) <== NOT EXECUTED
4d24e: 2541 001c movel %d1,%a2@(28) <== NOT EXECUTED
_Timestamp_To_timespec( &src->min_wall_time, &dst->min_wall_time );
4d252: 2028 0074 movel %a0@(116),%d0 <== NOT EXECUTED
4d256: 2228 0078 movel %a0@(120),%d1 <== NOT EXECUTED
4d25a: 2540 0020 movel %d0,%a2@(32) <== NOT EXECUTED
4d25e: 2541 0024 movel %d1,%a2@(36) <== NOT EXECUTED
_Timestamp_To_timespec( &src->max_wall_time, &dst->max_wall_time );
4d262: 2028 007c movel %a0@(124),%d0 <== NOT EXECUTED
4d266: 2228 0080 movel %a0@(128),%d1 <== NOT EXECUTED
4d26a: 2540 0028 movel %d0,%a2@(40) <== NOT EXECUTED
4d26e: 2541 002c movel %d1,%a2@(44) <== NOT EXECUTED
_Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
4d272: 2028 0084 movel %a0@(132),%d0 <== NOT EXECUTED
4d276: 2228 0088 movel %a0@(136),%d1 <== NOT EXECUTED
4d27a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
4d27e: 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();
4d282: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d288: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
dst->max_wall_time = src->max_wall_time;
dst->total_wall_time = src->total_wall_time;
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4d28c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d28e: 4e5e unlk %fp <== NOT EXECUTED
4d290: 4e75 rts <== NOT EXECUTED
4d292: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4d296: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4d298: 4e5e unlk %fp <== NOT EXECUTED
4d29a: 4e75 rts <== NOT EXECUTED
4d29c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
Rate_monotonic_Control *the_period;
rtems_rate_monotonic_period_statistics *dst;
Rate_monotonic_Statistics *src;
if ( !statistics )
return RTEMS_INVALID_ADDRESS;
4d2a0: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d2a2: 4e5e unlk %fp <== NOT EXECUTED
...
0004d2a8 <rtems_rate_monotonic_get_status>:
rtems_status_code rtems_rate_monotonic_get_status(
rtems_id id,
rtems_rate_monotonic_period_status *status
)
{
4d2a8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
4d2ac: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4d2ae: 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 )
4d2b2: 4a8a tstl %a2 <== NOT EXECUTED
4d2b4: 6700 00a0 beqw 4d356 <rtems_rate_monotonic_get_status+0xae><== NOT EXECUTED
4d2b8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4d2bc: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4d2c0: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
4d2c6: 4eb9 0004 98e8 jsr 498e8 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4d2cc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d2d0: 2040 moveal %d0,%a0 <== NOT EXECUTED
4d2d2: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
4d2d6: 6632 bnes 4d30a <rtems_rate_monotonic_get_status+0x62><== NOT EXECUTED
case OBJECTS_LOCAL:
status->owner = the_period->owner->Object.id;
4d2d8: 2268 0040 moveal %a0@(64),%a1 <== NOT EXECUTED
4d2dc: 24a9 0008 movel %a1@(8),%a2@ <== NOT EXECUTED
status->state = the_period->state;
4d2e0: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
4d2e4: 2540 0004 movel %d0,%a2@(4) <== NOT EXECUTED
/*
* If the period is inactive, there is no information.
*/
if ( status->state == RATE_MONOTONIC_INACTIVE ) {
4d2e8: 662a bnes 4d314 <rtems_rate_monotonic_get_status+0x6c><== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timespec_Set_to_zero( &status->since_last_period );
4d2ea: 42aa 0008 clrl %a2@(8) <== NOT EXECUTED
4d2ee: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
_Timespec_Set_to_zero( &status->executed_since_last_period );
4d2f2: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
4d2f6: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
status->since_last_period = since_last_period;
status->executed_since_last_period = executed;
#endif
}
_Thread_Enable_dispatch();
4d2fa: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4d300: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d302: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
4d306: 4e5e unlk %fp <== NOT EXECUTED
4d308: 4e75 rts <== NOT EXECUTED
4d30a: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4d30e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4d310: 4e5e unlk %fp <== NOT EXECUTED
4d312: 4e75 rts <== NOT EXECUTED
} else {
/*
* Grab the current status.
*/
valid_status =
4d314: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
4d318: 486e ffec pea %fp@(-20) <== NOT EXECUTED
4d31c: 2f08 movel %a0,%sp@- <== NOT EXECUTED
4d31e: 4eb9 0004 72c0 jsr 472c0 <_Rate_monotonic_Get_status> <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
4d324: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
4d328: 4a00 tstb %d0 <== NOT EXECUTED
4d32a: 6734 beqs 4d360 <rtems_rate_monotonic_get_status+0xb8><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
}
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
_Timestamp_To_timespec(
4d32c: 202e ffec movel %fp@(-20),%d0 <== NOT EXECUTED
4d330: 222e fff0 movel %fp@(-16),%d1 <== NOT EXECUTED
4d334: 2540 0008 movel %d0,%a2@(8) <== NOT EXECUTED
4d338: 2541 000c movel %d1,%a2@(12) <== NOT EXECUTED
&since_last_period, &status->since_last_period
);
_Timestamp_To_timespec(
4d33c: 202e fff4 movel %fp@(-12),%d0 <== NOT EXECUTED
4d340: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
4d344: 2540 0010 movel %d0,%a2@(16) <== NOT EXECUTED
4d348: 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();
4d34c: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4d352: 4280 clrl %d0 <== NOT EXECUTED
4d354: 60ac bras 4d302 <rtems_rate_monotonic_get_status+0x5a><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d356: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
Rate_monotonic_Period_time_t since_last_period;
Rate_monotonic_Control *the_period;
bool valid_status;
if ( !status )
return RTEMS_INVALID_ADDRESS;
4d35a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d35c: 4e5e unlk %fp <== NOT EXECUTED
4d35e: 4e75 rts <== NOT EXECUTED
valid_status =
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
4d360: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d366: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
_Rate_monotonic_Get_status(
the_period, &since_last_period, &executed
);
if (!valid_status) {
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
4d36a: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4d36c: 4e5e unlk %fp <== NOT EXECUTED
00047294 <rtems_rate_monotonic_ident>:
rtems_status_code rtems_rate_monotonic_ident(
rtems_name name,
rtems_id *id
)
{
47294: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
47298: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
4729c: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
472a2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
472a6: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
472ac: 4eb9 0004 9a74 jsr 49a74 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
472b2: 41f9 0005 e066 lea 5e066 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
472b8: 4e5e unlk %fp <== NOT EXECUTED
472ba: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00047510 <rtems_rate_monotonic_period>:
rtems_status_code rtems_rate_monotonic_period(
rtems_id id,
rtems_interval length
)
{
47510: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
47514: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47516: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Rate_monotonic_Control *)
_Objects_Get( &_Rate_monotonic_Information, id, location );
47518: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4751c: 242e 0008 movel %fp@(8),%d2 <== NOT EXECUTED
47520: 2f02 movel %d2,%sp@- <== NOT EXECUTED
47522: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
47528: 4eb9 0004 98e8 jsr 498e8 <_Objects_Get> <== NOT EXECUTED
rtems_rate_monotonic_period_states local_state;
ISR_Level level;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4752e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47532: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47536: 6624 bnes 4755c <rtems_rate_monotonic_period+0x4c><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Thread_Is_executing( the_period->owner ) ) {
47538: 2279 0006 0860 moveal 60860 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
4753e: 2040 moveal %d0,%a0 <== NOT EXECUTED
47540: b3e8 0040 cmpal %a0@(64),%a1 <== NOT EXECUTED
47544: 6726 beqs 4756c <rtems_rate_monotonic_period+0x5c><== NOT EXECUTED
_Thread_Enable_dispatch();
47546: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NOT_OWNER_OF_RESOURCE;
4754c: 7617 moveq #23,%d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4754e: 2003 movel %d3,%d0 <== NOT EXECUTED
47550: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
47554: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47558: 4e5e unlk %fp <== NOT EXECUTED
4755a: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4755c: 7604 moveq #4,%d3 <== NOT EXECUTED
}
4755e: 2003 movel %d3,%d0 <== NOT EXECUTED
47560: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
47564: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47568: 4e5e unlk %fp <== NOT EXECUTED
4756a: 4e75 rts <== NOT EXECUTED
if ( !_Thread_Is_executing( the_period->owner ) ) {
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
4756c: 4aae 000c tstl %fp@(12) <== NOT EXECUTED
47570: 6624 bnes 47596 <rtems_rate_monotonic_period+0x86><== NOT EXECUTED
switch ( the_period->state ) {
47572: 2040 moveal %d0,%a0 <== NOT EXECUTED
47574: 7204 moveq #4,%d1 <== NOT EXECUTED
47576: 2028 0038 movel %a0@(56),%d0 <== NOT EXECUTED
4757a: b280 cmpl %d0,%d1 <== NOT EXECUTED
4757c: 6400 008a bccw 47608 <rtems_rate_monotonic_period+0xf8><== NOT EXECUTED
47580: 4283 clrl %d3 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
47582: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47588: 2003 movel %d3,%d0 <== NOT EXECUTED
4758a: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
4758e: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47592: 4e5e unlk %fp <== NOT EXECUTED
47594: 4e75 rts <== NOT EXECUTED
}
_Thread_Enable_dispatch();
return( return_value );
}
_ISR_Disable( level );
47596: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
4759c: 40c3 movew %sr,%d3 <== NOT EXECUTED
4759e: 8283 orl %d3,%d1 <== NOT EXECUTED
475a0: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
475a2: 2040 moveal %d0,%a0 <== NOT EXECUTED
475a4: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
475a8: 6772 beqs 4761c <rtems_rate_monotonic_period+0x10c><== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
475aa: 7402 moveq #2,%d2 <== NOT EXECUTED
475ac: b481 cmpl %d1,%d2 <== NOT EXECUTED
475ae: 6700 00d2 beqw 47682 <rtems_rate_monotonic_period+0x172><== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {
475b2: 7404 moveq #4,%d2 <== NOT EXECUTED
475b4: b481 cmpl %d1,%d2 <== NOT EXECUTED
475b6: 66a4 bnes 4755c <rtems_rate_monotonic_period+0x4c><== NOT EXECUTED
/*
* Update statistics from the concluding period
*/
_Rate_monotonic_Update_statistics( the_period );
475b8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
475ba: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
475be: 4eb9 0004 73f6 jsr 473f6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED
_ISR_Enable( level );
475c4: 46c3 movew %d3,%sr <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
475c6: 7202 moveq #2,%d1 <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
475c8: 7606 moveq #6,%d3 <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
475ca: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
475ce: 2040 moveal %d0,%a0 <== NOT EXECUTED
the_period->next_length = length;
475d0: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
*/
_Rate_monotonic_Update_statistics( the_period );
_ISR_Enable( level );
the_period->state = RATE_MONOTONIC_ACTIVE;
475d4: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED
the_period->next_length = length;
475d8: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
475dc: 2149 001c movel %a1,%a0@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
475e0: 4868 0010 pea %a0@(16) <== NOT EXECUTED
475e4: 4879 0006 0780 pea 60780 <_Watchdog_Ticks_chain> <== NOT EXECUTED
475ea: 4eb9 0004 b458 jsr 4b458 <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
475f0: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
475f6: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
475fa: 2003 movel %d3,%d0 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_TIMEOUT;
475fc: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47600: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
47604: 4e5e unlk %fp <== NOT EXECUTED
47606: 4e75 rts <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NOT_OWNER_OF_RESOURCE;
}
if ( length == RTEMS_PERIOD_STATUS ) {
switch ( the_period->state ) {
47608: 41f9 0005 de86 lea 5de86 <CSWTCH.2>,%a0 <== NOT EXECUTED
4760e: 2630 0c00 movel %a0@(00000000,%d0:l:4),%d3 <== NOT EXECUTED
case RATE_MONOTONIC_ACTIVE:
default: /* unreached -- only to remove warnings */
return_value = RTEMS_SUCCESSFUL;
break;
}
_Thread_Enable_dispatch();
47612: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
47618: 6000 ff6e braw 47588 <rtems_rate_monotonic_period+0x78><== NOT EXECUTED
return( return_value );
}
_ISR_Disable( level );
if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {
_ISR_Enable( level );
4761c: 46c3 movew %d3,%sr <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
4761e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47620: 4283 clrl %d3 <== NOT EXECUTED
_ISR_Enable( level );
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
47622: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
47626: 4eb9 0004 7378 jsr 47378 <_Rate_monotonic_Initiate_statistics><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
4762c: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47630: 2240 moveal %d0,%a1 <== NOT EXECUTED
47632: 223c 0004 7994 movel #293268,%d1 <== NOT EXECUTED
the_watchdog->id = id;
47638: 2342 0030 movel %d2,%a1@(48) <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
4763c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
47640: 2341 002c movel %d1,%a1@(44) <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
the_period->state = RATE_MONOTONIC_ACTIVE;
47644: 7202 moveq #2,%d1 <== NOT EXECUTED
_Rate_monotonic_Timeout,
id,
NULL
);
the_period->next_length = length;
47646: 2342 003c movel %d2,%a1@(60) <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
4764a: 2342 001c movel %d2,%a1@(28) <== NOT EXECUTED
/*
* Baseline statistics information for the beginning of a period.
*/
_Rate_monotonic_Initiate_statistics( the_period );
the_period->state = RATE_MONOTONIC_ACTIVE;
4764e: 2341 0038 movel %d1,%a1@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
47652: 42a9 0018 clrl %a1@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
47656: 42a9 0034 clrl %a1@(52) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
4765a: 4869 0010 pea %a1@(16) <== NOT EXECUTED
4765e: 4879 0006 0780 pea 60780 <_Watchdog_Ticks_chain> <== NOT EXECUTED
47664: 4eb9 0004 b458 jsr 4b458 <_Watchdog_Insert> <== NOT EXECUTED
);
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
4766a: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47670: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
47674: 2003 movel %d3,%d0 <== NOT EXECUTED
the_period->next_length = length;
_Watchdog_Insert_ticks( &the_period->Timer, length );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47676: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4767a: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
4767e: 4e5e unlk %fp <== NOT EXECUTED
47680: 4e75 rts <== NOT EXECUTED
if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {
/*
* Update statistics from the concluding period.
*/
_Rate_monotonic_Update_statistics( the_period );
47682: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47684: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
47688: 4eb9 0004 73f6 jsr 473f6 <_Rate_monotonic_Update_statistics><== NOT EXECUTED
/*
* This tells the _Rate_monotonic_Timeout that this task is
* in the process of blocking on the period and that we
* may be changing the length of the next period.
*/
the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;
4768e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
47692: 7201 moveq #1,%d1 <== NOT EXECUTED
47694: 2040 moveal %d0,%a0 <== NOT EXECUTED
the_period->next_length = length;
47696: 226e 000c moveal %fp@(12),%a1 <== NOT EXECUTED
/*
* This tells the _Rate_monotonic_Timeout that this task is
* in the process of blocking on the period and that we
* may be changing the length of the next period.
*/
the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;
4769a: 2141 0038 movel %d1,%a0@(56) <== NOT EXECUTED
the_period->next_length = length;
4769e: 2149 003c movel %a1,%a0@(60) <== NOT EXECUTED
_ISR_Enable( level );
476a2: 46c3 movew %d3,%sr <== NOT EXECUTED
_Thread_Executing->Wait.id = the_period->Object.id;
476a4: 2079 0006 0860 moveal 60860 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
476aa: 2240 moveal %d0,%a1 <== NOT EXECUTED
476ac: 5089 addql #8,%a1 <== NOT EXECUTED
476ae: 2151 0020 movel %a1@,%a0@(32) <== NOT EXECUTED
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
476b2: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
476b6: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
476ba: 2f08 movel %a0,%sp@- <== NOT EXECUTED
476bc: 4eb9 0004 ad58 jsr 4ad58 <_Thread_Set_state> <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
476c2: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
476c8: 40c2 movew %sr,%d2 <== NOT EXECUTED
476ca: 8282 orl %d2,%d1 <== NOT EXECUTED
476cc: 46c1 movew %d1,%sr <== NOT EXECUTED
local_state = the_period->state;
the_period->state = RATE_MONOTONIC_ACTIVE;
476ce: 7602 moveq #2,%d3 <== NOT EXECUTED
/*
* Did the watchdog timer expire while we were actually blocking
* on it?
*/
_ISR_Disable( level );
local_state = the_period->state;
476d0: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
476d4: 2040 moveal %d0,%a0 <== NOT EXECUTED
476d6: 2228 0038 movel %a0@(56),%d1 <== NOT EXECUTED
the_period->state = RATE_MONOTONIC_ACTIVE;
476da: 2143 0038 movel %d3,%a0@(56) <== NOT EXECUTED
_ISR_Enable( level );
476de: 46c2 movew %d2,%sr <== NOT EXECUTED
/*
* If it did, then we want to unblock ourself and continue as
* if nothing happen. The period was reset in the timeout routine.
*/
if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )
476e0: 7003 moveq #3,%d0 <== NOT EXECUTED
476e2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
476e6: b081 cmpl %d1,%d0 <== NOT EXECUTED
476e8: 6716 beqs 47700 <rtems_rate_monotonic_period+0x1f0><== NOT EXECUTED
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
_Thread_Enable_dispatch();
476ea: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
476f0: 4283 clrl %d3 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
476f2: 2003 movel %d3,%d0 <== NOT EXECUTED
476f4: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
476f8: 262e fff4 movel %fp@(-12),%d3 <== NOT EXECUTED
476fc: 4e5e unlk %fp <== NOT EXECUTED
476fe: 4e75 rts <== NOT EXECUTED
/*
* If it did, then we want to unblock ourself and continue as
* if nothing happen. The period was reset in the timeout routine.
*/
if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
47700: 4878 4000 pea 4000 <D_MAX_EXP+0x3801> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47704: 4283 clrl %d3 <== NOT EXECUTED
/*
* If it did, then we want to unblock ourself and continue as
* if nothing happen. The period was reset in the timeout routine.
*/
if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING )
_Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
47706: 2f39 0006 0860 movel 60860 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
4770c: 4eb9 0004 a0c0 jsr 4a0c0 <_Thread_Clear_state> <== NOT EXECUTED
47712: 508f addql #8,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
47714: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
4771a: 60d6 bras 476f2 <rtems_rate_monotonic_period+0x1e2><== NOT EXECUTED
000478be <rtems_rate_monotonic_report_statistics>:
}
}
}
void rtems_rate_monotonic_report_statistics( void )
{
478be: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
rtems_rate_monotonic_report_statistics_with_plugin( NULL, printk_plugin );
478c2: 4879 0004 d0ac pea 4d0ac <printk_plugin> <== NOT EXECUTED
478c8: 42a7 clrl %sp@- <== NOT EXECUTED
478ca: 4eb9 0004 771c jsr 4771c <rtems_rate_monotonic_report_statistics_with_plugin><== NOT EXECUTED
478d0: 508f addql #8,%sp <== NOT EXECUTED
}
478d2: 4e5e unlk %fp <== NOT EXECUTED
...
0004771c <rtems_rate_monotonic_report_statistics_with_plugin>:
*/
void rtems_rate_monotonic_report_statistics_with_plugin(
void *context,
rtems_printk_plugin_t print
)
{
4771c: 4e56 ff78 linkw %fp,#-136 <== NOT EXECUTED
47720: 48d7 3cfc moveml %d2-%d7/%a2-%a5,%sp@ <== NOT EXECUTED
47724: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
47728: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
rtems_id id;
rtems_rate_monotonic_period_statistics the_stats;
rtems_rate_monotonic_period_status the_status;
char name[5];
if ( !print )
4772c: 4a8a tstl %a2 <== NOT EXECUTED
4772e: 6700 0082 beqw 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
return;
(*print)( context, "Period information by period\n" );
47732: 4879 0005 de9a pea 5de9a <CSWTCH.2+0x14> <== NOT EXECUTED
47738: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4773a: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
(*print)( context, "--- CPU times are in seconds ---\n" );
4773c: 4879 0005 deb8 pea 5deb8 <CSWTCH.2+0x32> <== NOT EXECUTED
47742: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47744: 4e92 jsr %a2@ <== NOT EXECUTED
(*print)( context, "--- Wall times are in seconds ---\n" );
47746: 4879 0005 deda pea 5deda <CSWTCH.2+0x54> <== NOT EXECUTED
4774c: 2f03 movel %d3,%sp@- <== NOT EXECUTED
4774e: 4e92 jsr %a2@ <== NOT EXECUTED
Be sure to test the various cases.
(*print)( context,"\
1234567890123456789012345678901234567890123456789012345678901234567890123456789\
\n");
*/
(*print)( context, " ID OWNER COUNT MISSED "
47750: 4879 0005 defd pea 5defd <CSWTCH.2+0x77> <== NOT EXECUTED
47756: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47758: 4e92 jsr %a2@ <== NOT EXECUTED
#ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__
" "
#endif
" WALL TIME\n"
);
(*print)( context, " "
4775a: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
4775e: 2ebc 0005 df48 movel #384840,%sp@ <== NOT EXECUTED
47764: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47766: 4e92 jsr %a2@ <== NOT EXECUTED
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
47768: 2439 0006 05b6 movel 605b6 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
4776e: 508f addql #8,%sp <== NOT EXECUTED
47770: b4b9 0006 05ba cmpl 605ba <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
47776: 623a bhis 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
47778: 280e movel %fp,%d4 <== NOT EXECUTED
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
4777a: 2a0e movel %fp,%d5 <== NOT EXECUTED
4777c: 0684 ffff ffa2 addil #-94,%d4 <== NOT EXECUTED
47782: 47f9 0004 d1e8 lea 4d1e8 <rtems_rate_monotonic_get_statistics>,%a3<== NOT EXECUTED
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
47788: 4bf9 0004 d2a8 lea 4d2a8 <rtems_rate_monotonic_get_status>,%a5<== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
4778e: 5b85 subql #5,%d5 <== NOT EXECUTED
47790: 49f9 0004 7a74 lea 47a74 <rtems_object_get_name>,%a4 <== NOT EXECUTED
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
47796: 2e3c 0004 b058 movel #307288,%d7 <== NOT EXECUTED
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
status = rtems_rate_monotonic_get_statistics( id, &the_stats );
4779c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4779e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
477a0: 4e93 jsr %a3@ <== NOT EXECUTED
if ( status != RTEMS_SUCCESSFUL )
477a2: 508f addql #8,%sp <== NOT EXECUTED
477a4: 4a80 tstl %d0 <== NOT EXECUTED
477a6: 6714 beqs 477bc <rtems_rate_monotonic_report_statistics_with_plugin+0xa0><== NOT EXECUTED
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
477a8: 5282 addql #1,%d2 <== NOT EXECUTED
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
477aa: b4b9 0006 05ba cmpl 605ba <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
477b0: 63ea blss 4779c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED
the_stats.min_wall_time, the_stats.max_wall_time, ival_wall, fval_wall
);
#endif
}
}
}
477b2: 4cee 3cfc ff78 moveml %fp@(-136),%d2-%d7/%a2-%a5 <== NOT EXECUTED
477b8: 4e5e unlk %fp <== NOT EXECUTED
477ba: 4e75 rts <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
status = rtems_rate_monotonic_get_status( id, &the_status );
if ( status != RTEMS_SUCCESSFUL )
continue;
#else
(void) rtems_rate_monotonic_get_status( id, &the_status );
477bc: 486e ffda pea %fp@(-38) <== NOT EXECUTED
477c0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
477c2: 4e95 jsr %a5@ <== NOT EXECUTED
#endif
rtems_object_get_name( the_status.owner, sizeof(name), name );
477c4: 2f05 movel %d5,%sp@- <== NOT EXECUTED
477c6: 4878 0005 pea 5 <COMPARE> <== NOT EXECUTED
477ca: 2f2e ffda movel %fp@(-38),%sp@- <== NOT EXECUTED
477ce: 4e94 jsr %a4@ <== NOT EXECUTED
/*
* Print part of report line that is not dependent on granularity
*/
(*print)( context,
477d0: 2f2e ffa6 movel %fp@(-90),%sp@- <== NOT EXECUTED
477d4: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED
477d8: 2f05 movel %d5,%sp@- <== NOT EXECUTED
477da: 2f02 movel %d2,%sp@- <== NOT EXECUTED
477dc: 4879 0005 df94 pea 5df94 <CSWTCH.2+0x10e> <== NOT EXECUTED
477e2: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477e4: 4e92 jsr %a2@ <== NOT EXECUTED
);
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
477e6: 202e ffa2 movel %fp@(-94),%d0 <== NOT EXECUTED
477ea: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
477ee: 6618 bnes 47808 <rtems_rate_monotonic_report_statistics_with_plugin+0xec><== NOT EXECUTED
(*print)( context, "\n" );
477f0: 4879 0005 ddbe pea 5ddbe <rtems_status_assoc+0x19e> <== NOT EXECUTED
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
477f6: 5282 addql #1,%d2 <== NOT EXECUTED
/*
* If the count is zero, don't print statistics
*/
if (the_stats.count == 0) {
(*print)( context, "\n" );
477f8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
477fa: 4e92 jsr %a2@ <== NOT EXECUTED
continue;
477fc: 508f addql #8,%sp <== NOT EXECUTED
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
477fe: b4b9 0006 05ba cmpl 605ba <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
47804: 6396 blss 4779c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED
47806: 60aa bras 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
47808: 486e fff2 pea %fp@(-14) <== NOT EXECUTED
4780c: 2047 moveal %d7,%a0 <== NOT EXECUTED
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
4780e: 5282 addql #1,%d2 <== NOT EXECUTED
struct timespec cpu_average;
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
47810: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47812: 486e ffba pea %fp@(-70) <== NOT EXECUTED
47816: 4e90 jsr %a0@ <== NOT EXECUTED
(*print)( context,
47818: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED
4781c: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
47822: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
47826: 2c2e ffb6 movel %fp@(-74),%d6 <== NOT EXECUTED
4782a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4782c: 2001 movel %d1,%d0 <== NOT EXECUTED
4782e: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED
47832: 4c40 6806 remsl %d0,%d6,%d6 <== NOT EXECUTED
47836: 202e ffae movel %fp@(-82),%d0 <== NOT EXECUTED
4783a: 2246 moveal %d6,%a1 <== NOT EXECUTED
4783c: 223c 0000 03e8 movel #1000,%d1 <== NOT EXECUTED
47842: 2f09 movel %a1,%sp@- <== NOT EXECUTED
47844: 2f2e ffb2 movel %fp@(-78),%sp@- <== NOT EXECUTED
47848: 4c41 0800 remsl %d1,%d0,%d0 <== NOT EXECUTED
struct timespec *min_wall = &the_stats.min_wall_time;
struct timespec *max_wall = &the_stats.max_wall_time;
struct timespec *total_wall = &the_stats.total_wall_time;
_Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
(*print)( context,
4784c: 2c3c 0000 03e8 movel #1000,%d6 <== NOT EXECUTED
struct timespec *min_cpu = &the_stats.min_cpu_time;
struct timespec *max_cpu = &the_stats.max_cpu_time;
struct timespec *total_cpu = &the_stats.total_cpu_time;
_Timespec_Divide_by_integer( total_cpu, the_stats.count, &cpu_average );
(*print)( context,
47852: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47854: 2f2e ffaa movel %fp@(-86),%sp@- <== NOT EXECUTED
47858: 4879 0005 dfab pea 5dfab <CSWTCH.2+0x125> <== NOT EXECUTED
4785e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
47860: 4e92 jsr %a2@ <== NOT EXECUTED
struct timespec wall_average;
struct timespec *min_wall = &the_stats.min_wall_time;
struct timespec *max_wall = &the_stats.max_wall_time;
struct timespec *total_wall = &the_stats.total_wall_time;
_Timespec_Divide_by_integer(total_wall, the_stats.count, &wall_average);
47862: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
47866: 2047 moveal %d7,%a0 <== NOT EXECUTED
47868: 486e fff2 pea %fp@(-14) <== NOT EXECUTED
4786c: 2f2e ffa2 movel %fp@(-94),%sp@- <== NOT EXECUTED
47870: 486e ffd2 pea %fp@(-46) <== NOT EXECUTED
47874: 4e90 jsr %a0@ <== NOT EXECUTED
(*print)( context,
47876: 202e fff6 movel %fp@(-10),%d0 <== NOT EXECUTED
4787a: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED
4787e: 222e ffce movel %fp@(-50),%d1 <== NOT EXECUTED
47882: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47884: 2f2e fff2 movel %fp@(-14),%sp@- <== NOT EXECUTED
47888: 4c46 1801 remsl %d6,%d1,%d1 <== NOT EXECUTED
4788c: 202e ffc6 movel %fp@(-58),%d0 <== NOT EXECUTED
47890: 2241 moveal %d1,%a1 <== NOT EXECUTED
47892: 2f09 movel %a1,%sp@- <== NOT EXECUTED
47894: 2f2e ffca movel %fp@(-54),%sp@- <== NOT EXECUTED
47898: 4c46 0800 remsl %d6,%d0,%d0 <== NOT EXECUTED
4789c: 2f00 movel %d0,%sp@- <== NOT EXECUTED
4789e: 2f2e ffc2 movel %fp@(-62),%sp@- <== NOT EXECUTED
478a2: 4879 0005 dfca pea 5dfca <CSWTCH.2+0x144> <== NOT EXECUTED
478a8: 2f03 movel %d3,%sp@- <== NOT EXECUTED
478aa: 4e92 jsr %a2@ <== NOT EXECUTED
478ac: 4fef 002c lea %sp@(44),%sp <== NOT EXECUTED
/*
* Cycle through all possible ids and try to report on each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
478b0: b4b9 0006 05ba cmpl 605ba <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
478b6: 6300 fee4 blsw 4779c <rtems_rate_monotonic_report_statistics_with_plugin+0x80><== NOT EXECUTED
478ba: 6000 fef6 braw 477b2 <rtems_rate_monotonic_report_statistics_with_plugin+0x96><== NOT EXECUTED
000478d8 <rtems_rate_monotonic_reset_all_statistics>:
/*
* rtems_rate_monotonic_reset_all_statistics
*/
void rtems_rate_monotonic_reset_all_statistics( void )
{
478d8: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
478dc: 2039 0006 06a0 movel 606a0 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
478e2: 5280 addql #1,%d0 <== NOT EXECUTED
478e4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
478e6: 23c0 0006 06a0 movel %d0,606a0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
478ec: 2f02 movel %d2,%sp@- <== NOT EXECUTED
/*
* Cycle through all possible ids and try to reset each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
478ee: 2439 0006 05b6 movel 605b6 <_Rate_monotonic_Information+0x6>,%d2<== NOT EXECUTED
478f4: b4b9 0006 05ba cmpl 605ba <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
478fa: 6216 bhis 47912 <rtems_rate_monotonic_reset_all_statistics+0x3a><== NOT EXECUTED
478fc: 45f9 0004 7924 lea 47924 <rtems_rate_monotonic_reset_statistics>,%a2<== NOT EXECUTED
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
(void) rtems_rate_monotonic_reset_statistics( id );
47902: 2f02 movel %d2,%sp@- <== NOT EXECUTED
* Cycle through all possible ids and try to reset each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
id <= _Rate_monotonic_Information.maximum_id ;
id++ ) {
47904: 5282 addql #1,%d2 <== NOT EXECUTED
(void) rtems_rate_monotonic_reset_statistics( id );
47906: 4e92 jsr %a2@ <== NOT EXECUTED
/*
* Cycle through all possible ids and try to reset each one. If it
* is a period that is inactive, we just get an error back. No big deal.
*/
for ( id=_Rate_monotonic_Information.minimum_id ;
47908: 588f addql #4,%sp <== NOT EXECUTED
4790a: b4b9 0006 05ba cmpl 605ba <_Rate_monotonic_Information+0xa>,%d2<== NOT EXECUTED
47910: 63f0 blss 47902 <rtems_rate_monotonic_reset_all_statistics+0x2a><== NOT EXECUTED
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
}
47912: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
47916: 246e fffc moveal %fp@(-4),%a2 <== NOT EXECUTED
4791a: 4e5e unlk %fp <== NOT EXECUTED
}
/*
* Done so exit thread dispatching disabled critical section.
*/
_Thread_Enable_dispatch();
4791c: 4ef9 0004 a476 jmp 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
...
00047924 <rtems_rate_monotonic_reset_statistics>:
*/
rtems_status_code rtems_rate_monotonic_reset_statistics(
rtems_id id
)
{
47924: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47928: 486e fffc pea %fp@(-4) <== NOT EXECUTED
4792c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47930: 4879 0006 05b0 pea 605b0 <_Rate_monotonic_Information> <== NOT EXECUTED
47936: 4eb9 0004 98e8 jsr 498e8 <_Objects_Get> <== NOT EXECUTED
Objects_Locations location;
Rate_monotonic_Control *the_period;
the_period = _Rate_monotonic_Get( id, &location );
switch ( location ) {
4793c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
47940: 2040 moveal %d0,%a0 <== NOT EXECUTED
47942: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47946: 6646 bnes 4798e <rtems_rate_monotonic_reset_statistics+0x6a><== NOT EXECUTED
case OBJECTS_LOCAL:
_Rate_monotonic_Reset_statistics( the_period );
47948: 42a8 0054 clrl %a0@(84) <== NOT EXECUTED
4794c: 43e8 007c lea %a0@(124),%a1 <== NOT EXECUTED
47950: 42a8 0058 clrl %a0@(88) <== NOT EXECUTED
47954: 42a8 0064 clrl %a0@(100) <== NOT EXECUTED
47958: 203c 7fff ffff movel #2147483647,%d0 <== NOT EXECUTED
4795e: 42a8 0068 clrl %a0@(104) <== NOT EXECUTED
47962: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
47966: 42a8 0070 clrl %a0@(112) <== NOT EXECUTED
4796a: 4299 clrl %a1@+ <== NOT EXECUTED
4796c: 4299 clrl %a1@+ <== NOT EXECUTED
4796e: 4299 clrl %a1@+ <== NOT EXECUTED
47970: 2140 005c movel %d0,%a0@(92) <== NOT EXECUTED
47974: 2140 0060 movel %d0,%a0@(96) <== NOT EXECUTED
47978: 2140 0074 movel %d0,%a0@(116) <== NOT EXECUTED
4797c: 2140 0078 movel %d0,%a0@(120) <== NOT EXECUTED
47980: 4291 clrl %a1@ <== NOT EXECUTED
_Thread_Enable_dispatch();
47982: 4eb9 0004 a476 jsr 4a476 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47988: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4798a: 4e5e unlk %fp <== NOT EXECUTED
4798c: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4798e: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47990: 4e5e unlk %fp <== NOT EXECUTED
000572e8 <rtems_region_create>:
uintptr_t length,
uintptr_t page_size,
rtems_attribute attribute_set,
rtems_id *id
)
{
572e8: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
572ec: 48d7 0c7c moveml %d2-%d6/%a2-%a3,%sp@ <== NOT EXECUTED
572f0: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
572f4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
572f8: 2a2e 0010 movel %fp@(16),%d5 <== NOT EXECUTED
572fc: 282e 0014 movel %fp@(20),%d4 <== NOT EXECUTED
57300: 2c2e 0018 movel %fp@(24),%d6 <== NOT EXECUTED
57304: 266e 001c moveal %fp@(28),%a3 <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
57308: 4a83 tstl %d3 <== NOT EXECUTED
5730a: 6774 beqs 57380 <rtems_region_create+0x98> <== NOT EXECUTED
return RTEMS_INVALID_NAME;
if ( !starting_address )
5730c: 4a82 tstl %d2 <== NOT EXECUTED
5730e: 6700 00dc beqw 573ec <rtems_region_create+0x104> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !id )
57312: 4a8b tstl %a3 <== NOT EXECUTED
57314: 6700 00d6 beqw 573ec <rtems_region_create+0x104> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
57318: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5731e: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
* This function allocates a region control block from
* the inactive chain of free region control blocks.
*/
RTEMS_INLINE_ROUTINE Region_Control *_Region_Allocate( void )
{
return (Region_Control *) _Objects_Allocate( &_Region_Information );
57324: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
5732a: 4eb9 0005 b350 jsr 5b350 <_Objects_Allocate> <== NOT EXECUTED
the_region = _Region_Allocate();
if ( !the_region )
57330: 508f addql #8,%sp <== NOT EXECUTED
57332: 2440 moveal %d0,%a2 <== NOT EXECUTED
57334: 4a80 tstl %d0 <== NOT EXECUTED
57336: 6700 00c2 beqw 573fa <rtems_region_create+0x112> <== NOT EXECUTED
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
5733a: 2f04 movel %d4,%sp@- <== NOT EXECUTED
5733c: 2f05 movel %d5,%sp@- <== NOT EXECUTED
5733e: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57340: 486a 0068 pea %a2@(104) <== NOT EXECUTED
57344: 4eb9 0005 aee2 jsr 5aee2 <_Heap_Initialize> <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
5734a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
if ( !the_region )
return_status = RTEMS_TOO_MANY;
else {
the_region->maximum_segment_size = _Heap_Initialize(
5734e: 2540 005c movel %d0,%a2@(92) <== NOT EXECUTED
&the_region->Memory, starting_address, length, page_size
);
if ( !the_region->maximum_segment_size ) {
57352: 663a bnes 5738e <rtems_region_create+0xa6> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
57354: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57356: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_INVALID_SIZE;
5735c: 7408 moveq #8,%d2 <== NOT EXECUTED
5735e: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
57364: 508f addql #8,%sp <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
57366: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5736c: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57372: 588f addql #4,%sp <== NOT EXECUTED
}
57374: 2002 movel %d2,%d0 <== NOT EXECUTED
57376: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5737c: 4e5e unlk %fp <== NOT EXECUTED
5737e: 4e75 rts <== NOT EXECUTED
{
rtems_status_code return_status;
Region_Control *the_region;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
57380: 7403 moveq #3,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
57382: 2002 movel %d2,%d0 <== NOT EXECUTED
57384: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
5738a: 4e5e unlk %fp <== NOT EXECUTED
5738c: 4e75 rts <== NOT EXECUTED
return_status = RTEMS_INVALID_SIZE;
}
else {
the_region->starting_address = starting_address;
5738e: 2542 0050 movel %d2,%a2@(80) <== NOT EXECUTED
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
57392: 4282 clrl %d2 <== NOT EXECUTED
}
else {
the_region->starting_address = starting_address;
the_region->length = length;
57394: 2545 0054 movel %d5,%a2@(84) <== NOT EXECUTED
the_region->page_size = page_size;
the_region->attribute_set = attribute_set;
the_region->number_of_used_blocks = 0;
_Thread_queue_Initialize(
57398: 44c6 movew %d6,%ccr <== NOT EXECUTED
5739a: 57c0 seq %d0 <== NOT EXECUTED
else {
the_region->starting_address = starting_address;
the_region->length = length;
the_region->page_size = page_size;
5739c: 2544 0058 movel %d4,%a2@(88) <== NOT EXECUTED
the_region->attribute_set = attribute_set;
the_region->number_of_used_blocks = 0;
_Thread_queue_Initialize(
573a0: 49c0 extbl %d0 <== NOT EXECUTED
573a2: 4480 negl %d0 <== NOT EXECUTED
else {
the_region->starting_address = starting_address;
the_region->length = length;
the_region->page_size = page_size;
the_region->attribute_set = attribute_set;
573a4: 2546 0060 movel %d6,%a2@(96) <== NOT EXECUTED
the_region->number_of_used_blocks = 0;
573a8: 42aa 0064 clrl %a2@(100) <== NOT EXECUTED
_Thread_queue_Initialize(
573ac: 4878 0006 pea 6 <EXTENDSFDF> <== NOT EXECUTED
573b0: 4878 0040 pea 40 <DBL_MANT_DIG+0xb> <== NOT EXECUTED
573b4: 2f00 movel %d0,%sp@- <== NOT EXECUTED
573b6: 486a 0010 pea %a2@(16) <== NOT EXECUTED
573ba: 4eb9 0005 cb50 jsr 5cb50 <_Thread_queue_Initialize> <== NOT EXECUTED
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
573c0: 202a 0008 movel %a2@(8),%d0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
573c4: 4281 clrl %d1 <== NOT EXECUTED
&_Region_Information,
&the_region->Object,
(Objects_Name) name
);
*id = the_region->Object.id;
573c6: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
573ca: 2079 0007 d15c moveal 7d15c <_Region_Information+0x18>,%a0 <== NOT EXECUTED
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
573d0: 3200 movew %d0,%d1 <== NOT EXECUTED
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
573d2: 218a 1c00 movel %a2,%a0@(00000000,%d1:l:4) <== NOT EXECUTED
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
573d6: 2543 000c movel %d3,%a2@(12) <== NOT EXECUTED
573da: 2680 movel %d0,%a3@ <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573dc: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
573e2: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
573e8: 588f addql #4,%sp <== NOT EXECUTED
573ea: 6088 bras 57374 <rtems_region_create+0x8c> <== NOT EXECUTED
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
if ( !id )
return RTEMS_INVALID_ADDRESS;
573ec: 7409 moveq #9,%d2 <== NOT EXECUTED
}
}
_RTEMS_Unlock_allocator();
return return_status;
}
573ee: 2002 movel %d2,%d0 <== NOT EXECUTED
573f0: 4cee 0c7c ffe4 moveml %fp@(-28),%d2-%d6/%a2-%a3 <== NOT EXECUTED
573f6: 4e5e unlk %fp <== NOT EXECUTED
573f8: 4e75 rts <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
573fa: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
_RTEMS_Lock_allocator(); /* to prevent deletion */
the_region = _Region_Allocate();
if ( !the_region )
return_status = RTEMS_TOO_MANY;
57400: 7405 moveq #5,%d2 <== NOT EXECUTED
*id = the_region->Object.id;
return_status = RTEMS_SUCCESSFUL;
}
}
_RTEMS_Unlock_allocator();
57402: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57408: 588f addql #4,%sp <== NOT EXECUTED
5740a: 6000 ff68 braw 57374 <rtems_region_create+0x8c> <== NOT EXECUTED
...
00057410 <rtems_region_delete>:
*/
rtems_status_code rtems_region_delete(
rtems_id id
)
{
57410: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
57414: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57416: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
_RTEMS_Lock_allocator();
57418: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5741e: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
57424: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57428: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5742c: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
57432: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57438: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5743c: 2440 moveal %d0,%a2 <== NOT EXECUTED
5743e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57442: 671c beqs 57460 <rtems_region_delete+0x50> <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57444: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
5744a: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
5744c: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57452: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57456: 2002 movel %d2,%d0 <== NOT EXECUTED
57458: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5745c: 4e5e unlk %fp <== NOT EXECUTED
5745e: 4e75 rts <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
57460: 4aaa 0064 tstl %a2@(100) <== NOT EXECUTED
57464: 671c beqs 57482 <rtems_region_delete+0x72> <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57466: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
switch ( location ) {
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
return_status = RTEMS_RESOURCE_IN_USE;
5746c: 740c moveq #12,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5746e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57474: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57478: 2002 movel %d2,%d0 <== NOT EXECUTED
5747a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5747e: 4e5e unlk %fp <== NOT EXECUTED
57480: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
return_status = RTEMS_RESOURCE_IN_USE;
else {
_Objects_Close( &_Region_Information, &the_region->Object );
57482: 2f00 movel %d0,%sp@- <== NOT EXECUTED
57484: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
_Region_Free( the_region );
return_status = RTEMS_SUCCESSFUL;
5748a: 4282 clrl %d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 5 );
if ( the_region->number_of_used_blocks != 0 )
return_status = RTEMS_RESOURCE_IN_USE;
else {
_Objects_Close( &_Region_Information, &the_region->Object );
5748c: 4eb9 0005 b3e0 jsr 5b3e0 <_Objects_Close> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Region_Free (
Region_Control *the_region
)
{
_Objects_Free( &_Region_Information, &the_region->Object );
57492: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57494: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
5749a: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
574a0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
574a4: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
574aa: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
574b0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
574b4: 2002 movel %d2,%d0 <== NOT EXECUTED
574b6: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
574ba: 4e5e unlk %fp <== NOT EXECUTED
...
000574c0 <rtems_region_extend>:
rtems_status_code rtems_region_extend(
rtems_id id,
void *starting_address,
uintptr_t length
)
{
574c0: 4e56 fff8 linkw %fp,#-8 <== NOT EXECUTED
574c4: 2f0a movel %a2,%sp@- <== NOT EXECUTED
574c6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
574c8: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
bool extend_ok;
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
574cc: 6700 0086 beqw 57554 <rtems_region_extend+0x94> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator(); /* to prevent deletion */
574d0: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
574d6: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Region_Control *)
_Objects_Get_no_protection( &_Region_Information, id, location );
574dc: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
574e0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
574e4: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
574ea: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
574f0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
574f4: 2440 moveal %d0,%a2 <== NOT EXECUTED
574f6: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
574fa: 6646 bnes 57542 <rtems_region_extend+0x82> <== NOT EXECUTED
case OBJECTS_LOCAL:
extend_ok = _Heap_Extend(
574fc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57500: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
57504: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57506: 486a 0068 pea %a2@(104) <== NOT EXECUTED
5750a: 4eb9 0005 a8e8 jsr 5a8e8 <_Heap_Extend> <== NOT EXECUTED
starting_address,
length,
&amount_extended
);
if ( extend_ok ) {
57510: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
57514: 4a00 tstb %d0 <== NOT EXECUTED
57516: 674c beqs 57564 <rtems_region_extend+0xa4> <== NOT EXECUTED
the_region->length += amount_extended;
57518: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
5751c: d1aa 0054 addl %d0,%a2@(84) <== NOT EXECUTED
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
57520: 4282 clrl %d2 <== NOT EXECUTED
&amount_extended
);
if ( extend_ok ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
57522: d1aa 005c addl %d0,%a2@(92) <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57526: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5752c: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57532: 588f addql #4,%sp <== NOT EXECUTED
}
57534: 2002 movel %d2,%d0 <== NOT EXECUTED
57536: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
5753a: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
5753e: 4e5e unlk %fp <== NOT EXECUTED
57540: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57542: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57548: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
5754a: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57550: 588f addql #4,%sp <== NOT EXECUTED
57552: 60e0 bras 57534 <rtems_region_extend+0x74> <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
if ( !starting_address )
return RTEMS_INVALID_ADDRESS;
57554: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57556: 2002 movel %d2,%d0 <== NOT EXECUTED
57558: 242e fff0 movel %fp@(-16),%d2 <== NOT EXECUTED
5755c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
57560: 4e5e unlk %fp <== NOT EXECUTED
57562: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57564: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
if ( extend_ok ) {
the_region->length += amount_extended;
the_region->maximum_segment_size += amount_extended;
return_status = RTEMS_SUCCESSFUL;
} else {
return_status = RTEMS_INVALID_ADDRESS;
5756a: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5756c: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57572: 588f addql #4,%sp <== NOT EXECUTED
57574: 60be bras 57534 <rtems_region_extend+0x74> <== NOT EXECUTED
...
00057578 <rtems_region_get_free_information>:
rtems_status_code rtems_region_get_free_information(
rtems_id id,
Heap_Information_block *the_info
)
{
57578: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5757c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
5757e: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
57582: 2f02 movel %d2,%sp@- <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
57584: 4a8a tstl %a2 <== NOT EXECUTED
57586: 6776 beqs 575fe <rtems_region_get_free_information+0x86><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
57588: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5758e: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
57594: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57598: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5759c: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
575a2: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
575a8: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
575ac: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
575b0: 663a bnes 575ec <rtems_region_get_free_information+0x74><== NOT EXECUTED
the_info->Used.number = 0;
the_info->Used.total = 0;
the_info->Used.largest = 0;
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
575b2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
575b4: 2040 moveal %d0,%a0 <== NOT EXECUTED
575b6: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
575ba: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
the_info->Used.number = 0;
575bc: 42aa 000c clrl %a2@(12) <== NOT EXECUTED
the_info->Used.total = 0;
575c0: 42aa 0014 clrl %a2@(20) <== NOT EXECUTED
the_info->Used.largest = 0;
575c4: 42aa 0010 clrl %a2@(16) <== NOT EXECUTED
_Heap_Get_free_information( &the_region->Memory, &the_info->Free );
575c8: 4eb9 0005 acbc jsr 5acbc <_Heap_Get_free_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
575ce: 508f addql #8,%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
575d0: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
575d6: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
575dc: 588f addql #4,%sp <== NOT EXECUTED
}
575de: 2002 movel %d2,%d0 <== NOT EXECUTED
575e0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
575e4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
575e8: 4e5e unlk %fp <== NOT EXECUTED
575ea: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
575ec: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
575f2: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
575f4: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
575fa: 588f addql #4,%sp <== NOT EXECUTED
575fc: 60e0 bras 575de <rtems_region_get_free_information+0x66><== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
575fe: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57600: 2002 movel %d2,%d0 <== NOT EXECUTED
57602: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57606: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
5760a: 4e5e unlk %fp <== NOT EXECUTED
...
00057610 <rtems_region_get_information>:
rtems_status_code rtems_region_get_information(
rtems_id id,
Heap_Information_block *the_info
)
{
57610: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
57614: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57616: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
5761a: 6766 beqs 57682 <rtems_region_get_information+0x72><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
5761c: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57622: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
57628: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5762c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57630: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
57636: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
5763c: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
57640: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57644: 662a bnes 57670 <rtems_region_get_information+0x60><== NOT EXECUTED
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
57646: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57648: 2040 moveal %d0,%a0 <== NOT EXECUTED
5764a: 4868 0068 pea %a0@(104) <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
5764e: 4282 clrl %d2 <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
_Heap_Get_information( &the_region->Memory, the_info );
57650: 4eb9 0005 ad18 jsr 5ad18 <_Heap_Get_information> <== NOT EXECUTED
return_status = RTEMS_SUCCESSFUL;
break;
57656: 508f addql #8,%sp <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57658: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5765e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57664: 588f addql #4,%sp <== NOT EXECUTED
}
57666: 2002 movel %d2,%d0 <== NOT EXECUTED
57668: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5766c: 4e5e unlk %fp <== NOT EXECUTED
5766e: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57670: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57676: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57678: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5767e: 588f addql #4,%sp <== NOT EXECUTED
57680: 60e4 bras 57666 <rtems_region_get_information+0x56><== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
register Region_Control *the_region;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
57682: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57684: 2002 movel %d2,%d0 <== NOT EXECUTED
57686: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
5768a: 4e5e unlk %fp <== NOT EXECUTED
...
00057690 <rtems_region_get_segment>:
uintptr_t size,
rtems_option option_set,
rtems_interval timeout,
void **segment
)
{
57690: 4e56 ffe4 linkw %fp,#-28 <== NOT EXECUTED
57694: 48d7 1c0c moveml %d2-%d3/%a2-%a4,%sp@ <== NOT EXECUTED
57698: 262e 0008 movel %fp@(8),%d3 <== NOT EXECUTED
5769c: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
576a0: 246e 0018 moveal %fp@(24),%a2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status;
Region_Control *the_region;
void *the_segment;
if ( !segment )
576a4: 4a8a tstl %a2 <== NOT EXECUTED
576a6: 6700 00be beqw 57766 <rtems_region_get_segment+0xd6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
*segment = NULL;
576aa: 4292 clrl %a2@ <== NOT EXECUTED
if ( size == 0 )
576ac: 4a82 tstl %d2 <== NOT EXECUTED
576ae: 660c bnes 576bc <rtems_region_get_segment+0x2c> <== NOT EXECUTED
return RTEMS_INVALID_SIZE;
576b0: 7008 moveq #8,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
576b2: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
576b8: 4e5e unlk %fp <== NOT EXECUTED
576ba: 4e75 rts <== NOT EXECUTED
*segment = NULL;
if ( size == 0 )
return RTEMS_INVALID_SIZE;
_RTEMS_Lock_allocator();
576bc: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576c2: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
576c8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
576cc: 2f03 movel %d3,%sp@- <== NOT EXECUTED
576ce: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
executing = _Thread_Executing;
576d4: 2879 0007 d3fc moveal 7d3fc <_Per_CPU_Information+0xc>,%a4 <== NOT EXECUTED
576da: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
576e0: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
576e4: 2640 moveal %d0,%a3 <== NOT EXECUTED
576e6: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
576ea: 6628 bnes 57714 <rtems_region_get_segment+0x84> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( size > the_region->maximum_segment_size )
576ec: b4ab 005c cmpl %a3@(92),%d2 <== NOT EXECUTED
576f0: 633c blss 5772e <rtems_region_get_segment+0x9e> <== NOT EXECUTED
return_status = RTEMS_INVALID_SIZE;
576f2: 7008 moveq #8,%d0 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
576f4: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
576fa: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
576fe: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57704: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
57708: 588f addql #4,%sp <== NOT EXECUTED
}
5770a: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
57710: 4e5e unlk %fp <== NOT EXECUTED
57712: 4e75 rts <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57714: 7004 moveq #4,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57716: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5771c: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57720: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57726: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
5772a: 588f addql #4,%sp <== NOT EXECUTED
5772c: 60dc bras 5770a <rtems_region_get_segment+0x7a> <== NOT EXECUTED
* @brief See _Heap_Allocate_aligned_with_boundary() with alignment and
* boundary equals zero.
*/
RTEMS_INLINE_ROUTINE void *_Heap_Allocate( Heap_Control *heap, uintptr_t size )
{
return _Heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
5772e: 42a7 clrl %sp@- <== NOT EXECUTED
57730: 42a7 clrl %sp@- <== NOT EXECUTED
57732: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57734: 486b 0068 pea %a3@(104) <== NOT EXECUTED
57738: 4eb9 0005 a738 jsr 5a738 <_Heap_Allocate_aligned_with_boundary><== NOT EXECUTED
the_segment = _Region_Allocate_segment( the_region, size );
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
5773e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
57742: 2200 movel %d0,%d1 <== NOT EXECUTED
57744: 672c beqs 57772 <rtems_region_get_segment+0xe2> <== NOT EXECUTED
the_region->number_of_used_blocks += 1;
57746: 52ab 0064 addql #1,%a3@(100) <== NOT EXECUTED
*segment = the_segment;
return_status = RTEMS_SUCCESSFUL;
5774a: 4280 clrl %d0 <== NOT EXECUTED
_Region_Debug_Walk( the_region, 2 );
if ( the_segment ) {
the_region->number_of_used_blocks += 1;
*segment = the_segment;
5774c: 2481 movel %d1,%a2@ <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5774e: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57754: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57758: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5775e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
57762: 588f addql #4,%sp <== NOT EXECUTED
57764: 60a4 bras 5770a <rtems_region_get_segment+0x7a> <== NOT EXECUTED
rtems_status_code return_status;
Region_Control *the_region;
void *the_segment;
if ( !segment )
return RTEMS_INVALID_ADDRESS;
57766: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57768: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
5776e: 4e5e unlk %fp <== NOT EXECUTED
57770: 4e75 rts <== NOT EXECUTED
if ( the_segment ) {
the_region->number_of_used_blocks += 1;
*segment = the_segment;
return_status = RTEMS_SUCCESSFUL;
} else if ( _Options_Is_no_wait( option_set ) ) {
57772: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
57776: 0800 0000 btst #0,%d0 <== NOT EXECUTED
5777a: 671c beqs 57798 <rtems_region_get_segment+0x108> <== NOT EXECUTED
return_status = RTEMS_UNSATISFIED;
5777c: 700d moveq #13,%d0 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5777e: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
57784: 2d40 fff8 movel %d0,%fp@(-8) <== NOT EXECUTED
57788: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5778e: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
57792: 588f addql #4,%sp <== NOT EXECUTED
57794: 6000 ff74 braw 5770a <rtems_region_get_segment+0x7a> <== NOT EXECUTED
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
57798: 2039 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d0<== NOT EXECUTED
5779e: 5280 addql #1,%d0 <== NOT EXECUTED
577a0: 23c0 0007 d234 movel %d0,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
* Switch from using the memory allocation mutex to using a
* dispatching disabled critical section. We have to do this
* because this thread is going to block.
*/
_Thread_Disable_dispatch();
_RTEMS_Unlock_allocator();
577a6: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
577ac: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
executing->Wait.queue = &the_region->Wait_queue;
577b2: 200b movel %a3,%d0 <== NOT EXECUTED
577b4: 0680 0000 0010 addil #16,%d0 <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
577ba: 7201 moveq #1,%d1 <== NOT EXECUTED
577bc: 2940 0044 movel %d0,%a4@(68) <== NOT EXECUTED
executing->Wait.id = id;
577c0: 2943 0020 movel %d3,%a4@(32) <== NOT EXECUTED
executing->Wait.count = size;
577c4: 2942 0024 movel %d2,%a4@(36) <== NOT EXECUTED
executing->Wait.return_argument = segment;
577c8: 294a 0028 movel %a2,%a4@(40) <== NOT EXECUTED
577cc: 2741 0040 movel %d1,%a3@(64) <== NOT EXECUTED
_Thread_queue_Enter_critical_section( &the_region->Wait_queue );
_Thread_queue_Enqueue( &the_region->Wait_queue, timeout );
577d0: 4879 0005 cc5c pea 5cc5c <_Thread_queue_Timeout> <== NOT EXECUTED
577d6: 2f2e 0014 movel %fp@(20),%sp@- <== NOT EXECUTED
577da: 2f00 movel %d0,%sp@- <== NOT EXECUTED
577dc: 4eb9 0005 c898 jsr 5c898 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
577e2: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return (rtems_status_code) executing->Wait.return_code;
577e8: 202c 0034 movel %a4@(52),%d0 <== NOT EXECUTED
577ec: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
577f0: 4cee 1c0c ffe4 moveml %fp@(-28),%d2-%d3/%a2-%a4 <== NOT EXECUTED
577f6: 4e5e unlk %fp <== NOT EXECUTED
...
000577fc <rtems_region_get_segment_size>:
rtems_status_code rtems_region_get_segment_size(
rtems_id id,
void *segment,
uintptr_t *size
)
{
577fc: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
57800: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57802: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
57806: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57808: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
register Region_Control *the_region;
if ( !segment )
5780c: 6700 0092 beqw 578a0 <rtems_region_get_segment_size+0xa4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !size )
57810: 4a83 tstl %d3 <== NOT EXECUTED
57812: 6700 008c beqw 578a0 <rtems_region_get_segment_size+0xa4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
57816: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5781c: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
57822: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57826: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
5782a: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
57830: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
57836: 222e fffc movel %fp@(-4),%d1 <== NOT EXECUTED
5783a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
5783e: 6636 bnes 57876 <rtems_region_get_segment_size+0x7a><== NOT EXECUTED
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
57840: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57842: 2040 moveal %d0,%a0 <== NOT EXECUTED
57844: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57846: 4868 0068 pea %a0@(104) <== NOT EXECUTED
5784a: 4eb9 0005 b230 jsr 5b230 <_Heap_Size_of_alloc_area> <== NOT EXECUTED
57850: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
57854: 4a00 tstb %d0 <== NOT EXECUTED
57856: 6624 bnes 5787c <rtems_region_get_segment_size+0x80><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57858: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
return_status = RTEMS_INVALID_ADDRESS;
5785e: 7409 moveq #9,%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57860: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57866: 588f addql #4,%sp <== NOT EXECUTED
}
57868: 2002 movel %d2,%d0 <== NOT EXECUTED
5786a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
5786e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57872: 4e5e unlk %fp <== NOT EXECUTED
57874: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
the_region = _Region_Get( id, &location );
switch ( location ) {
57876: 7001 moveq #1,%d0 <== NOT EXECUTED
57878: b081 cmpl %d1,%d0 <== NOT EXECUTED
5787a: 6712 beqs 5788e <rtems_region_get_segment_size+0x92><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5787c: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
void *segment,
uintptr_t *size
)
{
Objects_Locations location;
rtems_status_code return_status = RTEMS_SUCCESSFUL;
57882: 4282 clrl %d2 <== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57884: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5788a: 588f addql #4,%sp <== NOT EXECUTED
5788c: 60da bras 57868 <rtems_region_get_segment_size+0x6c><== NOT EXECUTED
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
5788e: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
case OBJECTS_REMOTE: /* this error cannot be returned */
break;
#endif
case OBJECTS_ERROR:
return_status = RTEMS_INVALID_ID;
57894: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57896: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
5789c: 588f addql #4,%sp <== NOT EXECUTED
5789e: 60c8 bras 57868 <rtems_region_get_segment_size+0x6c><== NOT EXECUTED
if ( !segment )
return RTEMS_INVALID_ADDRESS;
if ( !size )
return RTEMS_INVALID_ADDRESS;
578a0: 7409 moveq #9,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
578a2: 2002 movel %d2,%d0 <== NOT EXECUTED
578a4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
578a8: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
578ac: 4e5e unlk %fp <== NOT EXECUTED
000578b0 <rtems_region_ident>:
rtems_status_code rtems_region_ident(
rtems_name name,
rtems_id *id
)
{
578b0: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
578b4: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
578b8: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
578be: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
578c2: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
578c8: 4eb9 0005 b9d8 jsr 5b9d8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
578ce: 41f9 0007 6870 lea 76870 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
578d4: 4e5e unlk %fp <== NOT EXECUTED
578d6: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
000578dc <rtems_region_resize_segment>:
rtems_id id,
void *segment,
uintptr_t size,
uintptr_t *old_size
)
{
578dc: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
578e0: 2f0b movel %a3,%sp@- <== NOT EXECUTED
578e2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
578e4: 246e 0014 moveal %fp@(20),%a2 <== NOT EXECUTED
uintptr_t osize;
rtems_status_code return_status;
Heap_Resize_status status;
register Region_Control *the_region;
if ( !old_size )
578e8: 4a8a tstl %a2 <== NOT EXECUTED
578ea: 6700 00a4 beqw 57990 <rtems_region_resize_segment+0xb4><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
_RTEMS_Lock_allocator();
578ee: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
578f4: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
578fa: 486e fff8 pea %fp@(-8) <== NOT EXECUTED
578fe: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57902: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
57908: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
5790e: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
57912: 2640 moveal %d0,%a3 <== NOT EXECUTED
57914: 4aae fff8 tstl %fp@(-8) <== NOT EXECUTED
57918: 663e bnes 57958 <rtems_region_resize_segment+0x7c><== NOT EXECUTED
case OBJECTS_LOCAL:
_Region_Debug_Walk( the_region, 7 );
status = _Heap_Resize_block(
5791a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5791e: 486e fff4 pea %fp@(-12) <== NOT EXECUTED
57922: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
57926: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
5792a: 486b 0068 pea %a3@(104) <== NOT EXECUTED
5792e: 4eb9 0005 b144 jsr 5b144 <_Heap_Resize_block> <== NOT EXECUTED
segment,
(uint32_t) size,
&osize,
&avail_size
);
*old_size = (uint32_t) osize;
57934: 24ae fff4 movel %fp@(-12),%a2@ <== NOT EXECUTED
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
57938: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
5793c: 4a80 tstl %d0 <== NOT EXECUTED
5793e: 6634 bnes 57974 <rtems_region_resize_segment+0x98><== NOT EXECUTED
_Region_Process_queue( the_region ); /* unlocks allocator */
57940: 2f0b movel %a3,%sp@- <== NOT EXECUTED
57942: 4eb9 0005 f358 jsr 5f358 <_Region_Process_queue> <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57948: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
*old_size = (uint32_t) osize;
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
_Region_Process_queue( the_region ); /* unlocks allocator */
5794c: 588f addql #4,%sp <== NOT EXECUTED
else
_RTEMS_Unlock_allocator();
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
5794e: 4280 clrl %d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57950: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
57954: 4e5e unlk %fp <== NOT EXECUTED
57956: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57958: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5795e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
}
57964: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
return return_status;
57968: 588f addql #4,%sp <== NOT EXECUTED
5796a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
5796c: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
57970: 4e5e unlk %fp <== NOT EXECUTED
57972: 4e75 rts <== NOT EXECUTED
_Region_Debug_Walk( the_region, 8 );
if ( status == HEAP_RESIZE_SUCCESSFUL )
_Region_Process_queue( the_region ); /* unlocks allocator */
else
_RTEMS_Unlock_allocator();
57974: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
5797a: 2d40 fff0 movel %d0,%fp@(-16) <== NOT EXECUTED
5797e: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
57984: 202e fff0 movel %fp@(-16),%d0 <== NOT EXECUTED
57988: 588f addql #4,%sp <== NOT EXECUTED
5798a: 7201 moveq #1,%d1 <== NOT EXECUTED
5798c: b280 cmpl %d0,%d1 <== NOT EXECUTED
5798e: 670e beqs 5799e <rtems_region_resize_segment+0xc2><== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57990: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
return RTEMS_UNSATISFIED;
return RTEMS_INVALID_ADDRESS;
57994: 7009 moveq #9,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57996: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
5799a: 4e5e unlk %fp <== NOT EXECUTED
5799c: 4e75 rts <== NOT EXECUTED
5799e: 246e ffe8 moveal %fp@(-24),%a2 <== NOT EXECUTED
if (status == HEAP_RESIZE_SUCCESSFUL)
return RTEMS_SUCCESSFUL;
if (status == HEAP_RESIZE_UNSATISFIED)
return RTEMS_UNSATISFIED;
579a2: 700d moveq #13,%d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
579a4: 266e ffec moveal %fp@(-20),%a3 <== NOT EXECUTED
579a8: 4e5e unlk %fp <== NOT EXECUTED
000579ac <rtems_region_return_segment>:
rtems_status_code rtems_region_return_segment(
rtems_id id,
void *segment
)
{
579ac: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
579b0: 2f0a movel %a2,%sp@- <== NOT EXECUTED
579b2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
uint32_t size;
#endif
int status;
register Region_Control *the_region;
_RTEMS_Lock_allocator();
579b4: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
579ba: 4eb9 0005 9b60 jsr 59b60 <_API_Mutex_Lock> <== NOT EXECUTED
579c0: 486e fffc pea %fp@(-4) <== NOT EXECUTED
579c4: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
579c8: 4879 0007 d144 pea 7d144 <_Region_Information> <== NOT EXECUTED
579ce: 4eb9 0005 b810 jsr 5b810 <_Objects_Get_no_protection> <== NOT EXECUTED
the_region = _Region_Get( id, &location );
switch ( location ) {
579d4: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
579d8: 2440 moveal %d0,%a2 <== NOT EXECUTED
579da: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
579de: 6632 bnes 57a12 <rtems_region_return_segment+0x66><== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _Region_Free_segment (
Region_Control *the_region,
void *the_segment
)
{
return _Heap_Free( &the_region->Memory, the_segment );
579e0: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
579e4: 486a 0068 pea %a2@(104) <== NOT EXECUTED
579e8: 4eb9 0005 ab44 jsr 5ab44 <_Heap_Free> <== NOT EXECUTED
#endif
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
579ee: 508f addql #8,%sp <== NOT EXECUTED
579f0: 4a00 tstb %d0 <== NOT EXECUTED
579f2: 6630 bnes 57a24 <rtems_region_return_segment+0x78><== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579f4: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
status = _Region_Free_segment( the_region, segment );
_Region_Debug_Walk( the_region, 4 );
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
579fa: 7409 moveq #9,%d2 <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
579fc: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57a02: 588f addql #4,%sp <== NOT EXECUTED
}
57a04: 2002 movel %d2,%d0 <== NOT EXECUTED
57a06: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57a0a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57a0e: 4e5e unlk %fp <== NOT EXECUTED
57a10: 4e75 rts <== NOT EXECUTED
default:
return_status = RTEMS_INVALID_ID;
break;
}
_RTEMS_Unlock_allocator();
57a12: 2f39 0007 d2f4 movel 7d2f4 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
break;
#endif
case OBJECTS_ERROR:
default:
return_status = RTEMS_INVALID_ID;
57a18: 7404 moveq #4,%d2 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
57a1a: 4eb9 0005 9bc0 jsr 59bc0 <_API_Mutex_Unlock> <== NOT EXECUTED
return return_status;
57a20: 588f addql #4,%sp <== NOT EXECUTED
57a22: 60e0 bras 57a04 <rtems_region_return_segment+0x58><== NOT EXECUTED
_Region_Debug_Walk( the_region, 4 );
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
else {
the_region->number_of_used_blocks -= 1;
57a24: 53aa 0064 subql #1,%a2@(100) <== NOT EXECUTED
_Region_Process_queue(the_region); /* unlocks allocator */
return RTEMS_SUCCESSFUL;
57a28: 4282 clrl %d2 <== NOT EXECUTED
if ( !status )
return_status = RTEMS_INVALID_ADDRESS;
else {
the_region->number_of_used_blocks -= 1;
_Region_Process_queue(the_region); /* unlocks allocator */
57a2a: 2f0a movel %a2,%sp@- <== NOT EXECUTED
57a2c: 4eb9 0005 f358 jsr 5f358 <_Region_Process_queue> <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57a32: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
57a36: 2002 movel %d2,%d0 <== NOT EXECUTED
else {
the_region->number_of_used_blocks -= 1;
_Region_Process_queue(the_region); /* unlocks allocator */
return RTEMS_SUCCESSFUL;
57a38: 588f addql #4,%sp <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return return_status;
}
57a3a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57a3e: 4e5e unlk %fp <== NOT EXECUTED
...
000461dc <rtems_semaphore_create>:
uint32_t count,
rtems_attribute attribute_set,
rtems_task_priority priority_ceiling,
rtems_id *id
)
{
461dc: 4e56 ffd4 linkw %fp,#-44
461e0: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@
461e4: 262e 0008 movel %fp@(8),%d3
461e8: 242e 0010 movel %fp@(16),%d2
461ec: 246e 0018 moveal %fp@(24),%a2
register Semaphore_Control *the_semaphore;
CORE_mutex_Attributes the_mutex_attr;
CORE_semaphore_Attributes the_semaphore_attr;
CORE_mutex_Status mutex_status;
if ( !rtems_is_name_valid( name ) )
461f0: 4a83 tstl %d3
461f2: 6746 beqs 4623a <rtems_semaphore_create+0x5e> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
461f4: 4a8a tstl %a2
461f6: 6700 00e8 beqw 462e0 <rtems_semaphore_create+0x104>
* id - semaphore id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_semaphore_create(
461fa: 2002 movel %d2,%d0
461fc: 0280 0000 00c0 andil #192,%d0
return RTEMS_NOT_DEFINED;
} else
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
46202: 6742 beqs 46246 <rtems_semaphore_create+0x6a>
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_binary_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_BINARY_SEMAPHORE);
46204: 7230 moveq #48,%d1
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
46206: 7810 moveq #16,%d4
46208: c282 andl %d2,%d1
4620a: b881 cmpl %d1,%d4
4620c: 670c beqs 4621a <rtems_semaphore_create+0x3e> <== ALWAYS TAKEN
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
4620e: 700b moveq #11,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46210: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46216: 4e5e unlk %fp <== NOT EXECUTED
46218: 4e75 rts <== NOT EXECUTED
#endif
if ( _Attributes_Is_inherit_priority( attribute_set ) ||
_Attributes_Is_priority_ceiling( attribute_set ) ) {
if ( ! (_Attributes_Is_binary_semaphore( attribute_set ) &&
4621a: 44c2 movew %d2,%ccr
4621c: 66f0 bnes 4620e <rtems_semaphore_create+0x32> <== NEVER TAKEN
_Attributes_Is_priority( attribute_set ) ) )
return RTEMS_NOT_DEFINED;
}
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
4621e: 0c80 0000 00c0 cmpil #192,%d0
46224: 67e8 beqs 4620e <rtems_semaphore_create+0x32> <== NEVER TAKEN
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
46226: 7001 moveq #1,%d0
46228: b0ae 000c cmpl %fp@(12),%d0
4622c: 641e bccs 4624c <rtems_semaphore_create+0x70> <== ALWAYS TAKEN
return RTEMS_INVALID_NUMBER;
4622e: 700a moveq #10,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46230: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46236: 4e5e unlk %fp <== NOT EXECUTED
46238: 4e75 rts <== NOT EXECUTED
CORE_mutex_Attributes the_mutex_attr;
CORE_semaphore_Attributes the_semaphore_attr;
CORE_mutex_Status mutex_status;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
4623a: 7003 moveq #3,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4623c: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
46242: 4e5e unlk %fp <== NOT EXECUTED
46244: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _Attributes_Is_counting_semaphore(
rtems_attribute attribute_set
)
{
return ((attribute_set & RTEMS_SEMAPHORE_CLASS) == RTEMS_COUNTING_SEMAPHORE);
46246: 7830 moveq #48,%d4
46248: c882 andl %d2,%d4
if ( _Attributes_Is_inherit_priority( attribute_set ) &&
_Attributes_Is_priority_ceiling( attribute_set ) )
return RTEMS_NOT_DEFINED;
if ( !_Attributes_Is_counting_semaphore( attribute_set ) && ( count > 1 ) )
4624a: 66da bnes 46226 <rtems_semaphore_create+0x4a>
rtems_fatal_error_occurred( 99 );
}
}
#endif
_Thread_Dispatch_disable_level += 1;
4624c: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
46252: 5280 addql #1,%d0
46254: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
* This function allocates a semaphore control block from
* the inactive chain of free semaphore control blocks.
*/
RTEMS_INLINE_ROUTINE Semaphore_Control *_Semaphore_Allocate( void )
{
return (Semaphore_Control *) _Objects_Allocate( &_Semaphore_Information );
4625a: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
46260: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate>
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
46266: 588f addql #4,%sp
46268: 2640 moveal %d0,%a3
4626a: 4a80 tstl %d0
4626c: 6700 00d8 beqw 46346 <rtems_semaphore_create+0x16a>
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
#endif
the_semaphore->attribute_set = attribute_set;
46270: 2742 0010 movel %d2,%a3@(16)
/*
* Initialize it as a counting semaphore.
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
46274: 4a84 tstl %d4
46276: 6774 beqs 462ec <rtems_semaphore_create+0x110> <== NEVER TAKEN
/*
* It is either simple binary semaphore or a more powerful mutex
* style binary semaphore. This is the mutex style.
*/
if ( _Attributes_Is_priority( attribute_set ) )
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;
46278: 44c2 movew %d2,%ccr
4627a: 56c0 sne %d0
4627c: 49c0 extbl %d0
4627e: 5280 addql #1,%d0
46280: 2d40 fff0 movel %d0,%fp@(-16)
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
46284: 7010 moveq #16,%d0
46286: b084 cmpl %d4,%d0
46288: 6700 00ce beqw 46358 <rtems_semaphore_create+0x17c>
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
the_mutex_attr.only_owner_release = true;
}
}
} else /* must be simple binary semaphore */ {
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS;
4628c: 7202 moveq #2,%d1
the_mutex_attr.only_owner_release = false;
4628e: 4204 clrb %d4
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
the_mutex_attr.only_owner_release = true;
}
}
} else /* must be simple binary semaphore */ {
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_BLOCKS;
46290: 2d41 ffea movel %d1,%fp@(-22)
the_mutex_attr.only_owner_release = false;
46294: 1d44 ffee moveb %d4,%fp@(-18)
}
mutex_status = _CORE_mutex_Initialize(
46298: 7001 moveq #1,%d0
4629a: b0ae 000c cmpl %fp@(12),%d0
4629e: 57c0 seq %d0
462a0: 49c0 extbl %d0
462a2: 4480 negl %d0
462a4: 2f00 movel %d0,%sp@-
462a6: 486e ffea pea %fp@(-22)
462aa: 486b 0014 pea %a3@(20)
462ae: 4eb9 0004 6f40 jsr 46f40 <_CORE_mutex_Initialize>
&the_semaphore->Core_control.mutex,
&the_mutex_attr,
(count == 1) ? CORE_MUTEX_UNLOCKED : CORE_MUTEX_LOCKED
);
if ( mutex_status == CORE_MUTEX_STATUS_CEILING_VIOLATED ) {
462b4: 4fef 000c lea %sp@(12),%sp
462b8: 7206 moveq #6,%d1
462ba: b280 cmpl %d0,%d1
462bc: 665e bnes 4631c <rtems_semaphore_create+0x140> <== ALWAYS TAKEN
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
462be: 2f0b movel %a3,%sp@- <== NOT EXECUTED
462c0: 4879 0005 e480 pea 5e480 <_Semaphore_Information> <== NOT EXECUTED
462c6: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free> <== NOT EXECUTED
_Semaphore_Free( the_semaphore );
_Thread_Enable_dispatch();
462cc: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
462d2: 508f addql #8,%sp <== NOT EXECUTED
462d4: 7013 moveq #19,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
462d6: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
462dc: 4e5e unlk %fp <== NOT EXECUTED
462de: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
462e0: 7009 moveq #9,%d0 <== NOT EXECUTED
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
462e2: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3 <== NOT EXECUTED
462e8: 4e5e unlk %fp <== NOT EXECUTED
462ea: 4e75 rts <== NOT EXECUTED
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
_CORE_semaphore_Initialize(
462ec: 2f2e 000c movel %fp@(12),%sp@-
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
462f0: 72ff moveq #-1,%d1
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
_CORE_semaphore_Initialize(
462f2: 486e fff8 pea %fp@(-8)
462f6: 486b 0014 pea %a3@(20)
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
462fa: 44c2 movew %d2,%ccr
462fc: 56c0 sne %d0
*/
if ( _Attributes_Is_counting_semaphore( attribute_set ) ) {
/*
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
462fe: 2d41 fff8 movel %d1,%fp@(-8)
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
46302: 49c0 extbl %d0
46304: 5280 addql #1,%d0
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_FIFO;
/*
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
46306: 42ae ffea clrl %fp@(-22)
* This effectively disables limit checking.
*/
the_semaphore_attr.maximum_count = 0xFFFFFFFF;
if ( _Attributes_Is_priority( attribute_set ) )
the_semaphore_attr.discipline = CORE_SEMAPHORE_DISCIPLINES_PRIORITY;
4630a: 2d40 fffc movel %d0,%fp@(-4)
/*
* The following are just to make Purify happy.
*/
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.priority_ceiling = PRIORITY_MINIMUM;
4630e: 42ae fff4 clrl %fp@(-12)
_CORE_semaphore_Initialize(
46312: 4eb9 0004 7278 jsr 47278 <_CORE_semaphore_Initialize>
46318: 4fef 000c lea %sp@(12),%sp
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
4631c: 202b 0008 movel %a3@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46320: 4281 clrl %d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46322: 2079 0005 e498 moveal 5e498 <_Semaphore_Information+0x18>,%a0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46328: 3200 movew %d0,%d1
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
4632a: 218b 1c00 movel %a3,%a0@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
4632e: 2743 000c movel %d3,%a3@(12)
&_Semaphore_Information,
&the_semaphore->Object,
(Objects_Name) name
);
*id = the_semaphore->Object.id;
46332: 2480 movel %d0,%a2@
the_semaphore->Object.id,
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
46334: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
4633a: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3
name,
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46340: 4280 clrl %d0
}
46342: 4e5e unlk %fp
46344: 4e75 rts
_Thread_Disable_dispatch(); /* prevents deletion */
the_semaphore = _Semaphore_Allocate();
if ( !the_semaphore ) {
_Thread_Enable_dispatch();
46346: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return RTEMS_TOO_MANY;
4634c: 7005 moveq #5,%d0
0 /* Not used */
);
#endif
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
4634e: 4cee 0c1c ffd4 moveml %fp@(-44),%d2-%d4/%a2-%a3
46354: 4e5e unlk %fp
46356: 4e75 rts
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
the_mutex_attr.priority_ceiling = priority_ceiling;
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
46358: 42ae ffea clrl %fp@(-22)
the_mutex_attr.only_owner_release = false;
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
4635c: 7801 moveq #1,%d4
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
the_mutex_attr.priority_ceiling = priority_ceiling;
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
4635e: 4201 clrb %d1
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY;
else
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_FIFO;
if ( _Attributes_Is_binary_semaphore( attribute_set ) ) {
the_mutex_attr.priority_ceiling = priority_ceiling;
46360: 2d6e 0014 fff4 movel %fp@(20),%fp@(-12)
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
46366: 1d41 ffee moveb %d1,%fp@(-18)
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
4636a: b8ae fff0 cmpl %fp@(-16),%d4
4636e: 6600 ff28 bnew 46298 <rtems_semaphore_create+0xbc>
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
46372: 0802 0006 btst #6,%d2
46376: 6712 beqs 4638a <rtems_semaphore_create+0x1ae> <== NEVER TAKEN
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
46378: 103c 0002 moveb #2,%d0
the_mutex_attr.only_owner_release = true;
4637c: 7201 moveq #1,%d1
the_mutex_attr.lock_nesting_behavior = CORE_MUTEX_NESTING_ACQUIRES;
the_mutex_attr.only_owner_release = false;
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
4637e: 2d40 fff0 movel %d0,%fp@(-16)
the_mutex_attr.only_owner_release = true;
46382: 1d41 ffee moveb %d1,%fp@(-18)
46386: 6000 ff10 braw 46298 <rtems_semaphore_create+0xbc>
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
4638a: 4a02 tstb %d2 <== NOT EXECUTED
4638c: 6c00 ff0a bgew 46298 <rtems_semaphore_create+0xbc> <== NOT EXECUTED
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
46390: 7803 moveq #3,%d4 <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
46392: 7001 moveq #1,%d0 <== NOT EXECUTED
if ( the_mutex_attr.discipline == CORE_MUTEX_DISCIPLINES_PRIORITY ) {
if ( _Attributes_Is_inherit_priority( attribute_set ) ) {
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
the_mutex_attr.only_owner_release = true;
} else if ( _Attributes_Is_priority_ceiling( attribute_set ) ) {
the_mutex_attr.discipline = CORE_MUTEX_DISCIPLINES_PRIORITY_CEILING;
46394: 2d44 fff0 movel %d4,%fp@(-16) <== NOT EXECUTED
the_mutex_attr.only_owner_release = true;
46398: 1d40 ffee moveb %d0,%fp@(-18) <== NOT EXECUTED
4639c: 6000 fefa braw 46298 <rtems_semaphore_create+0xbc> <== NOT EXECUTED
000463a0 <rtems_semaphore_delete>:
#endif
rtems_status_code rtems_semaphore_delete(
rtems_id id
)
{
463a0: 4e56 fffc linkw %fp,#-4
463a4: 2f0a movel %a2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
463a6: 486e fffc pea %fp@(-4)
463aa: 2f2e 0008 movel %fp@(8),%sp@-
463ae: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
463b4: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
463ba: 4fef 000c lea %sp@(12),%sp
463be: 2440 moveal %d0,%a2
463c0: 4aae fffc tstl %fp@(-4)
463c4: 670a beqs 463d0 <rtems_semaphore_delete+0x30> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463c6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
463ca: 7004 moveq #4,%d0 <== NOT EXECUTED
}
463cc: 4e5e unlk %fp <== NOT EXECUTED
463ce: 4e75 rts <== NOT EXECUTED
463d0: 7030 moveq #48,%d0
463d2: c0aa 0010 andl %a2@(16),%d0
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
463d6: 6760 beqs 46438 <rtems_semaphore_delete+0x98>
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
463d8: 4aaa 0062 tstl %a2@(98)
463dc: 6616 bnes 463f4 <rtems_semaphore_delete+0x54>
463de: 7220 moveq #32,%d1
463e0: b280 cmpl %d0,%d1
463e2: 6710 beqs 463f4 <rtems_semaphore_delete+0x54> <== ALWAYS TAKEN
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
463e4: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463ea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
if ( _CORE_mutex_Is_locked( &the_semaphore->Core_control.mutex ) &&
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
463ee: 700c moveq #12,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
463f0: 4e5e unlk %fp <== NOT EXECUTED
463f2: 4e75 rts <== NOT EXECUTED
!_Attributes_Is_simple_binary_semaphore(
the_semaphore->attribute_set ) ) {
_Thread_Enable_dispatch();
return RTEMS_RESOURCE_IN_USE;
}
_CORE_mutex_Flush(
463f4: 4878 0004 pea 4 <CONTEXT_ARG>
463f8: 42a7 clrl %sp@-
463fa: 486a 0014 pea %a2@(20)
463fe: 4eb9 0004 6f34 jsr 46f34 <_CORE_mutex_Flush>
46404: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
46408: 2f0a movel %a2,%sp@-
4640a: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
46410: 4eb9 0004 795c jsr 4795c <_Objects_Close>
*/
RTEMS_INLINE_ROUTINE void _Semaphore_Free (
Semaphore_Control *the_semaphore
)
{
_Objects_Free( &_Semaphore_Information, &the_semaphore->Object );
46416: 2f0a movel %a2,%sp@-
46418: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
4641e: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46424: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4642a: 4fef 0010 lea %sp@(16),%sp
4642e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46430: 246e fff8 moveal %fp@(-8),%a2
46434: 4e5e unlk %fp
46436: 4e75 rts
&the_semaphore->Core_control.mutex,
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_MUTEX_WAS_DELETED
);
} else {
_CORE_semaphore_Flush(
46438: 4878 0002 pea 2 <DOUBLE_FLOAT>
4643c: 42a7 clrl %sp@-
4643e: 486a 0014 pea %a2@(20)
46442: 4eb9 0004 726c jsr 4726c <_CORE_semaphore_Flush>
46448: 4fef 000c lea %sp@(12),%sp
SEMAPHORE_MP_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_WAS_DELETED
);
}
_Objects_Close( &_Semaphore_Information, &the_semaphore->Object );
4644c: 2f0a movel %a2,%sp@-
4644e: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
46454: 4eb9 0004 795c jsr 4795c <_Objects_Close>
4645a: 2f0a movel %a2,%sp@-
4645c: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
46462: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
0, /* Not used */
0 /* Not used */
);
}
#endif
_Thread_Enable_dispatch();
46468: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4646e: 4fef 0010 lea %sp@(16),%sp
46472: 4280 clrl %d0
46474: 60ba bras 46430 <rtems_semaphore_delete+0x90>
...
0004f7a4 <rtems_semaphore_flush>:
#endif
rtems_status_code rtems_semaphore_flush(
rtems_id id
)
{
4f7a4: 4e56 fffc linkw %fp,#-4
4f7a8: 486e fffc pea %fp@(-4)
4f7ac: 2f2e 0008 movel %fp@(8),%sp@-
4f7b0: 4879 0006 26b8 pea 626b8 <_Semaphore_Information>
4f7b6: 4eb9 0004 9344 jsr 49344 <_Objects_Get>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
4f7bc: 4fef 000c lea %sp@(12),%sp
4f7c0: 4aae fffc tstl %fp@(-4)
4f7c4: 6706 beqs 4f7cc <rtems_semaphore_flush+0x28> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4f7c6: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4f7c8: 4e5e unlk %fp <== NOT EXECUTED
4f7ca: 4e75 rts <== NOT EXECUTED
4f7cc: 7230 moveq #48,%d1
4f7ce: 2040 moveal %d0,%a0
4f7d0: c2a8 0010 andl %a0@(16),%d1
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
4f7d4: 6720 beqs 4f7f6 <rtems_semaphore_flush+0x52> <== NEVER TAKEN
_CORE_mutex_Flush(
4f7d6: 4878 0001 pea 1 <ADD>
4f7da: 42a7 clrl %sp@-
4f7dc: 4868 0014 pea %a0@(20)
4f7e0: 4eb9 0004 84ec jsr 484ec <_CORE_mutex_Flush>
4f7e6: 4fef 000c lea %sp@(12),%sp
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
4f7ea: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
4f7f0: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4f7f2: 4e5e unlk %fp
4f7f4: 4e75 rts
&the_semaphore->Core_control.mutex,
SEND_OBJECT_WAS_DELETED,
CORE_MUTEX_STATUS_UNSATISFIED_NOWAIT
);
} else {
_CORE_semaphore_Flush(
4f7f6: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
4f7fa: 2040 moveal %d0,%a0 <== NOT EXECUTED
4f7fc: 42a7 clrl %sp@- <== NOT EXECUTED
4f7fe: 4868 0014 pea %a0@(20) <== NOT EXECUTED
4f802: 4eb9 0004 8824 jsr 48824 <_CORE_semaphore_Flush> <== NOT EXECUTED
4f808: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
SEND_OBJECT_WAS_DELETED,
CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT
);
}
_Thread_Enable_dispatch();
4f80c: 4eb9 0004 9eda jsr 49eda <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
4f812: 4280 clrl %d0 <== NOT EXECUTED
4f814: 60dc bras 4f7f2 <rtems_semaphore_flush+0x4e> <== NOT EXECUTED
...
00057d54 <rtems_semaphore_ident>:
rtems_status_code rtems_semaphore_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
57d54: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32( &_Semaphore_Information, name, node, id );
57d58: 2f2e 0010 movel %fp@(16),%sp@- <== NOT EXECUTED
57d5c: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
57d60: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57d64: 4879 0007 d17c pea 7d17c <_Semaphore_Information> <== NOT EXECUTED
57d6a: 4eb9 0005 b9d8 jsr 5b9d8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
57d70: 41f9 0007 6870 lea 76870 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
57d76: 4e5e unlk %fp <== NOT EXECUTED
57d78: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
...
00046478 <rtems_semaphore_obtain>:
rtems_status_code rtems_semaphore_obtain(
rtems_id id,
rtems_option option_set,
rtems_interval timeout
)
{
46478: 4e56 ffec linkw %fp,#-20
4647c: 48d7 001c moveml %d2-%d4,%sp@
Objects_Locations *location,
ISR_Level *level
)
{
return (Semaphore_Control *)
_Objects_Get_isr_disable( &_Semaphore_Information, id, location, level );
46480: 486e fff8 pea %fp@(-8)
46484: 486e fffc pea %fp@(-4)
46488: 242e 0008 movel %fp@(8),%d2
4648c: 2f02 movel %d2,%sp@-
4648e: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
46494: 262e 000c movel %fp@(12),%d3
46498: 282e 0010 movel %fp@(16),%d4
4649c: 4eb9 0004 7d2c jsr 47d2c <_Objects_Get_isr_disable>
register Semaphore_Control *the_semaphore;
Objects_Locations location;
ISR_Level level;
the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level );
switch ( location ) {
464a2: 4fef 0010 lea %sp@(16),%sp
464a6: 4aae fffc tstl %fp@(-4)
464aa: 670c beqs 464b8 <rtems_semaphore_obtain+0x40> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
464ac: 7004 moveq #4,%d0 <== NOT EXECUTED
}
464ae: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED
464b4: 4e5e unlk %fp <== NOT EXECUTED
464b6: 4e75 rts <== NOT EXECUTED
464b8: 7230 moveq #48,%d1
464ba: 2040 moveal %d0,%a0
464bc: c2a8 0010 andl %a0@(16),%d1
the_semaphore = _Semaphore_Get_interrupt_disable( id, &location, &level );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
464c0: 6738 beqs 464fa <rtems_semaphore_obtain+0x82> <== NEVER TAKEN
_CORE_mutex_Seize(
464c2: 2f2e fff8 movel %fp@(-8),%sp@-
*/
RTEMS_INLINE_ROUTINE bool _Options_Is_no_wait (
rtems_option option_set
)
{
return (option_set & RTEMS_NO_WAIT) ? true : false;
464c6: 7201 moveq #1,%d1
464c8: c681 andl %d1,%d3
464ca: 2f04 movel %d4,%sp@-
464cc: b781 eorl %d3,%d1
464ce: 2f01 movel %d1,%sp@-
464d0: 2f02 movel %d2,%sp@-
464d2: 4868 0014 pea %a0@(20)
464d6: 4eb9 0004 70bc jsr 470bc <_CORE_mutex_Seize>
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
_Thread_Executing->Wait.return_code );
464dc: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
level
);
return _Semaphore_Translate_core_mutex_return_code(
464e2: 2f28 0034 movel %a0@(52),%sp@-
464e6: 4eb9 0004 6648 jsr 46648 <_Semaphore_Translate_core_mutex_return_code>
464ec: 4fef 0018 lea %sp@(24),%sp
break;
}
return RTEMS_INVALID_ID;
}
464f0: 4cee 001c ffec moveml %fp@(-20),%d2-%d4
464f6: 4e5e unlk %fp
464f8: 4e75 rts
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
464fa: 2240 moveal %d0,%a1 <== NOT EXECUTED
{
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
464fc: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
46502: 2229 005c movel %a1@(92),%d1 <== NOT EXECUTED
Thread_Control *executing;
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
46506: 42a8 0034 clrl %a0@(52) <== NOT EXECUTED
if ( the_semaphore->count != 0 ) {
4650a: 4a81 tstl %d1 <== NOT EXECUTED
4650c: 662e bnes 4653c <rtems_semaphore_obtain+0xc4> <== NOT EXECUTED
the_semaphore->count -= 1;
_ISR_Enable( *level_p );
return;
}
if ( !wait ) {
4650e: 0803 0000 btst #0,%d3 <== NOT EXECUTED
46512: 6748 beqs 4655c <rtems_semaphore_obtain+0xe4> <== NOT EXECUTED
_ISR_Enable( *level_p );
46514: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
46518: 46c0 movew %d0,%sr <== NOT EXECUTED
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_UNSATISFIED_NOWAIT;
4651a: 7001 moveq #1,%d0 <== NOT EXECUTED
4651c: 2140 0034 movel %d0,%a0@(52) <== NOT EXECUTED
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
46520: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
46526: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
4652a: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
46530: 588f addql #4,%sp <== NOT EXECUTED
break;
}
return RTEMS_INVALID_ID;
}
46532: 4cee 001c ffec moveml %fp@(-20),%d2-%d4 <== NOT EXECUTED
46538: 4e5e unlk %fp <== NOT EXECUTED
4653a: 4e75 rts <== NOT EXECUTED
/* disabled when you get here */
executing = _Thread_Executing;
executing->Wait.return_code = CORE_SEMAPHORE_STATUS_SUCCESSFUL;
if ( the_semaphore->count != 0 ) {
the_semaphore->count -= 1;
4653c: 5381 subql #1,%d1 <== NOT EXECUTED
4653e: 2341 005c movel %d1,%a1@(92) <== NOT EXECUTED
_ISR_Enable( *level_p );
46542: 202e fff8 movel %fp@(-8),%d0 <== NOT EXECUTED
46546: 46c0 movew %d0,%sr <== NOT EXECUTED
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
_Thread_Executing->Wait.return_code );
46548: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
4654e: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
46552: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
46558: 588f addql #4,%sp <== NOT EXECUTED
4655a: 60d6 bras 46532 <rtems_semaphore_obtain+0xba> <== NOT EXECUTED
4655c: 2239 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
46562: 5281 addql #1,%d1 <== NOT EXECUTED
46564: 23c1 0005 e538 movel %d1,5e538 <_Thread_Dispatch_disable_level><== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (
Thread_queue_Control *the_thread_queue
)
{
the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
4656a: 7201 moveq #1,%d1 <== NOT EXECUTED
4656c: 2240 moveal %d0,%a1 <== NOT EXECUTED
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
4656e: 0680 0000 0014 addil #20,%d0 <== NOT EXECUTED
46574: 2341 0044 movel %d1,%a1@(68) <== NOT EXECUTED
executing->Wait.id = id;
46578: 2142 0020 movel %d2,%a0@(32) <== NOT EXECUTED
return;
}
_Thread_Disable_dispatch();
_Thread_queue_Enter_critical_section( &the_semaphore->Wait_queue );
executing->Wait.queue = &the_semaphore->Wait_queue;
4657c: 2140 0044 movel %d0,%a0@(68) <== NOT EXECUTED
executing->Wait.id = id;
_ISR_Enable( *level_p );
46580: 222e fff8 movel %fp@(-8),%d1 <== NOT EXECUTED
46584: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_queue_Enqueue( &the_semaphore->Wait_queue, timeout );
46586: 4879 0004 919c pea 4919c <_Thread_queue_Timeout> <== NOT EXECUTED
4658c: 2f04 movel %d4,%sp@- <== NOT EXECUTED
4658e: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46590: 4eb9 0004 8dd8 jsr 48dd8 <_Thread_queue_Enqueue_with_handler><== NOT EXECUTED
_Thread_Enable_dispatch();
46596: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
_Thread_Executing->Wait.return_code );
4659c: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
465a2: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
id,
((_Options_Is_no_wait( option_set )) ? false : true),
timeout,
&level
);
return _Semaphore_Translate_core_semaphore_return_code(
465a6: 2f28 0034 movel %a0@(52),%sp@- <== NOT EXECUTED
465aa: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
465b0: 588f addql #4,%sp <== NOT EXECUTED
465b2: 6000 ff7e braw 46532 <rtems_semaphore_obtain+0xba> <== NOT EXECUTED
...
000465b8 <rtems_semaphore_release>:
#endif
rtems_status_code rtems_semaphore_release(
rtems_id id
)
{
465b8: 4e56 fffc linkw %fp,#-4
465bc: 2f02 movel %d2,%sp@-
Objects_Id id,
Objects_Locations *location
)
{
return (Semaphore_Control *)
_Objects_Get( &_Semaphore_Information, id, location );
465be: 486e fffc pea %fp@(-4)
465c2: 242e 0008 movel %fp@(8),%d2
465c6: 2f02 movel %d2,%sp@-
465c8: 4879 0005 e480 pea 5e480 <_Semaphore_Information>
465ce: 4eb9 0004 7d8c jsr 47d8c <_Objects_Get>
Objects_Locations location;
CORE_mutex_Status mutex_status;
CORE_semaphore_Status semaphore_status;
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
465d4: 4fef 000c lea %sp@(12),%sp
465d8: 4aae fffc tstl %fp@(-4)
465dc: 670a beqs 465e8 <rtems_semaphore_release+0x30> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
465de: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
465e2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
465e4: 4e5e unlk %fp <== NOT EXECUTED
465e6: 4e75 rts <== NOT EXECUTED
465e8: 7230 moveq #48,%d1
465ea: 2040 moveal %d0,%a0
465ec: c2a8 0010 andl %a0@(16),%d1
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
465f0: 662c bnes 4661e <rtems_semaphore_release+0x66> <== ALWAYS TAKEN
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
} else {
semaphore_status = _CORE_semaphore_Surrender(
465f2: 42a7 clrl %sp@- <== NOT EXECUTED
465f4: 2040 moveal %d0,%a0 <== NOT EXECUTED
465f6: 2f02 movel %d2,%sp@- <== NOT EXECUTED
465f8: 4868 0014 pea %a0@(20) <== NOT EXECUTED
465fc: 4eb9 0004 72c0 jsr 472c0 <_CORE_semaphore_Surrender> <== NOT EXECUTED
46602: 2400 movel %d0,%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
46604: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
return
4660a: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4660c: 4eb9 0004 665e jsr 4665e <_Semaphore_Translate_core_semaphore_return_code><== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46612: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
&the_semaphore->Core_control.semaphore,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return
46616: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4661a: 4e5e unlk %fp <== NOT EXECUTED
4661c: 4e75 rts <== NOT EXECUTED
the_semaphore = _Semaphore_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Attributes_Is_counting_semaphore(the_semaphore->attribute_set) ) {
mutex_status = _CORE_mutex_Surrender(
4661e: 42a7 clrl %sp@-
46620: 2f02 movel %d2,%sp@-
46622: 4868 0014 pea %a0@(20)
46626: 4eb9 0004 716c jsr 4716c <_CORE_mutex_Surrender>
4662c: 2400 movel %d0,%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
4662e: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
46634: 2f02 movel %d2,%sp@-
46636: 4eb9 0004 6648 jsr 46648 <_Semaphore_Translate_core_mutex_return_code>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4663c: 242e fff8 movel %fp@(-8),%d2
&the_semaphore->Core_control.mutex,
id,
MUTEX_MP_SUPPORT
);
_Thread_Enable_dispatch();
return _Semaphore_Translate_core_mutex_return_code( mutex_status );
46640: 4fef 0010 lea %sp@(16),%sp
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46644: 4e5e unlk %fp <== NOT EXECUTED
00046b50 <rtems_shutdown_executive>:
void rtems_shutdown_executive(
uint32_t result
)
{
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b50: 7003 moveq #3,%d0
*/
void rtems_shutdown_executive(
uint32_t result
)
{
46b52: 4e56 0000 linkw %fp,#0
if ( _System_state_Is_up( _System_state_Get() ) ) {
46b56: b0b9 0005 e6a0 cmpl 5e6a0 <_System_state_Current>,%d0
46b5c: 6710 beqs 46b6e <rtems_shutdown_executive+0x1e>
_System_state_Set( SYSTEM_STATE_SHUTDOWN );
_Thread_Stop_multitasking();
}
_Internal_error_Occurred(
46b5e: 4878 0014 pea 14 <OPER2>
46b62: 4878 0001 pea 1 <ADD>
46b66: 42a7 clrl %sp@-
46b68: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred>
* if we were running within the same context, it would work.
*
* And we will not return to this thread, so there is no point of
* saving the context.
*/
_Context_Restart_self( &_Thread_BSP_context );
46b6e: 4879 0005 e504 pea 5e504 <_Thread_BSP_context>
46b74: 103c 0004 moveb #4,%d0
46b78: 23c0 0005 e6a0 movel %d0,5e6a0 <_System_state_Current>
46b7e: 4eb9 0004 9b4e jsr 49b4e <_CPU_Context_Restart_self>
46b84: 588f addql #4,%sp <== NOT EXECUTED
46b86: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
46b8a: 4878 0001 pea 1 <ADD> <== NOT EXECUTED
46b8e: 42a7 clrl %sp@- <== NOT EXECUTED
46b90: 4eb9 0004 7810 jsr 47810 <_Internal_error_Occurred> <== NOT EXECUTED
...
00047728 <rtems_signal_catch>:
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
47728: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
4772c: 2239 0005 fcc0 movel 5fcc0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
47732: 5281 addql #1,%d1 <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
/* XXX normalize mode */
executing = _Thread_Executing;
api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ];
47734: 2079 0005 fe80 moveal 5fe80 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
rtems_status_code rtems_signal_catch(
rtems_asr_entry asr_handler,
rtems_mode mode_set
)
{
4773a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
/* XXX normalize mode */
executing = _Thread_Executing;
api = (RTEMS_API_Control*)executing->API_Extensions[ THREAD_API_RTEMS ];
4773e: 2068 00fc moveal %a0@(252),%a0 <== NOT EXECUTED
47742: 23c1 0005 fcc0 movel %d1,5fcc0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
asr = &api->Signal;
_Thread_Disable_dispatch(); /* cannot reschedule while */
/* the thread is inconsistent */
if ( !_ASR_Is_null_handler( asr_handler ) ) {
47748: 4a80 tstl %d0 <== NOT EXECUTED
4774a: 6716 beqs 47762 <rtems_signal_catch+0x3a> <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
4774c: 2140 000a movel %d0,%a0@(10) <== NOT EXECUTED
_Thread_Disable_dispatch(); /* cannot reschedule while */
/* the thread is inconsistent */
if ( !_ASR_Is_null_handler( asr_handler ) ) {
asr->mode_set = mode_set;
47750: 216e 000c 000e movel %fp@(12),%a0@(14) <== NOT EXECUTED
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
47756: 4eb9 0004 9d26 jsr 49d26 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
4775c: 4280 clrl %d0 <== NOT EXECUTED
4775e: 4e5e unlk %fp <== NOT EXECUTED
47760: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
information->handler = NULL;
47762: 42a8 000a clrl %a0@(10) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
47766: 4200 clrb %d0 <== NOT EXECUTED
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
47768: 42a8 000e clrl %a0@(14) <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _ASR_Initialize (
ASR_Information *information
)
{
information->is_enabled = false;
4776c: 1140 0008 moveb %d0,%a0@(8) <== NOT EXECUTED
information->handler = NULL;
information->mode_set = RTEMS_DEFAULT_MODES;
information->signals_posted = 0;
47770: 42a8 0012 clrl %a0@(18) <== NOT EXECUTED
information->signals_pending = 0;
47774: 42a8 0016 clrl %a0@(22) <== NOT EXECUTED
information->nest_level = 0;
47778: 42a8 001a clrl %a0@(26) <== NOT EXECUTED
asr->mode_set = mode_set;
asr->handler = asr_handler;
}
else
_ASR_Initialize( asr );
_Thread_Enable_dispatch();
4777c: 4eb9 0004 9d26 jsr 49d26 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
47782: 4280 clrl %d0 <== NOT EXECUTED
47784: 4e5e unlk %fp <== NOT EXECUTED
00057f7c <rtems_signal_send>:
rtems_status_code rtems_signal_send(
rtems_id id,
rtems_signal_set signal_set
)
{
57f7c: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
57f80: 2f03 movel %d3,%sp@- <== NOT EXECUTED
57f82: 2f02 movel %d2,%sp@- <== NOT EXECUTED
57f84: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
57f88: 660e bnes 57f98 <rtems_signal_send+0x1c> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f8a: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
Objects_Locations location;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
57f8e: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57f90: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57f94: 4e5e unlk %fp <== NOT EXECUTED
57f96: 4e75 rts <== NOT EXECUTED
ASR_Information *asr;
if ( !signal_set )
return RTEMS_INVALID_NUMBER;
the_thread = _Thread_Get( id, &location );
57f98: 486e fffc pea %fp@(-4) <== NOT EXECUTED
57f9c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
57fa0: 4eb9 0005 c400 jsr 5c400 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
57fa6: 508f addql #8,%sp <== NOT EXECUTED
57fa8: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
57fac: 670e beqs 57fbc <rtems_signal_send+0x40> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57fae: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
57fb2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
57fb4: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
57fb8: 4e5e unlk %fp <== NOT EXECUTED
57fba: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
57fbc: 2240 moveal %d0,%a1 <== NOT EXECUTED
57fbe: 2069 00fc moveal %a1@(252),%a0 <== NOT EXECUTED
asr = &api->Signal;
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
57fc2: 4aa8 000a tstl %a0@(10) <== NOT EXECUTED
57fc6: 676a beqs 58032 <rtems_signal_send+0xb6> <== NOT EXECUTED
if ( asr->is_enabled ) {
57fc8: 4a28 0008 tstb %a0@(8) <== NOT EXECUTED
57fcc: 6736 beqs 58004 <rtems_signal_send+0x88> <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
57fce: 223c 0000 0700 movel #1792,%d1 <== NOT EXECUTED
57fd4: 40c3 movew %sr,%d3 <== NOT EXECUTED
57fd6: 8283 orl %d3,%d1 <== NOT EXECUTED
57fd8: 46c1 movew %d1,%sr <== NOT EXECUTED
*signal_set |= signals;
57fda: 85a8 0012 orl %d2,%a0@(18) <== NOT EXECUTED
_ISR_Enable( _level );
57fde: 46c3 movew %d3,%sr <== NOT EXECUTED
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
57fe0: 4ab9 0007 d3f8 tstl 7d3f8 <_Per_CPU_Information+0x8> <== NOT EXECUTED
57fe6: 6708 beqs 57ff0 <rtems_signal_send+0x74> <== NOT EXECUTED
57fe8: b0b9 0007 d3fc cmpl 7d3fc <_Per_CPU_Information+0xc>,%d0 <== NOT EXECUTED
57fee: 6730 beqs 58020 <rtems_signal_send+0xa4> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
57ff0: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
57ff6: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
57ff8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
57ffc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
58000: 4e5e unlk %fp <== NOT EXECUTED
58002: 4e75 rts <== NOT EXECUTED
rtems_signal_set *signal_set
)
{
ISR_Level _level;
_ISR_Disable( _level );
58004: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
5800a: 40c1 movew %sr,%d1 <== NOT EXECUTED
5800c: 8081 orl %d1,%d0 <== NOT EXECUTED
5800e: 46c0 movew %d0,%sr <== NOT EXECUTED
*signal_set |= signals;
58010: 85a8 0016 orl %d2,%a0@(22) <== NOT EXECUTED
_ISR_Enable( _level );
58014: 46c1 movew %d1,%sr <== NOT EXECUTED
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
58016: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5801c: 4280 clrl %d0 <== NOT EXECUTED
5801e: 60d8 bras 57ff8 <rtems_signal_send+0x7c> <== NOT EXECUTED
if ( ! _ASR_Is_null_handler( asr->handler ) ) {
if ( asr->is_enabled ) {
_ASR_Post_signals( signal_set, &asr->signals_posted );
if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
_Thread_Dispatch_necessary = true;
58020: 7001 moveq #1,%d0 <== NOT EXECUTED
58022: 13c0 0007 d408 moveb %d0,7d408 <_Per_CPU_Information+0x18> <== NOT EXECUTED
} else {
_ASR_Post_signals( signal_set, &asr->signals_pending );
}
_Thread_Enable_dispatch();
58028: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
5802e: 4280 clrl %d0 <== NOT EXECUTED
58030: 60c6 bras 57ff8 <rtems_signal_send+0x7c> <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58032: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58038: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_NOT_DEFINED;
5803c: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
5803e: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
58042: 4e5e unlk %fp <== NOT EXECUTED
...
00046674 <rtems_task_create>:
size_t stack_size,
rtems_mode initial_modes,
rtems_attribute attribute_set,
rtems_id *id
)
{
46674: 4e56 ffe8 linkw %fp,#-24
46678: 48d7 0c3c moveml %d2-%d5/%a2-%a3,%sp@
4667c: 242e 0008 movel %fp@(8),%d2
46680: 282e 000c movel %fp@(12),%d4
46684: 262e 0014 movel %fp@(20),%d3
46688: 2a2e 0018 movel %fp@(24),%d5
4668c: 246e 001c moveal %fp@(28),%a2
Priority_Control core_priority;
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
46690: 4a8a tstl %a2
46692: 6700 0118 beqw 467ac <rtems_task_create+0x138>
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
46696: 4a82 tstl %d2
46698: 6700 00bc beqw 46756 <rtems_task_create+0xe2>
/*
* Validate the RTEMS API priority and convert it to the core priority range.
*/
if ( !_Attributes_Is_system_task( the_attribute_set ) ) {
4669c: 4a45 tstw %d5
4669e: 6d14 blts 466b4 <rtems_task_create+0x40> <== NEVER TAKEN
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
466a0: 4a84 tstl %d4
466a2: 6700 00a6 beqw 4674a <rtems_task_create+0xd6>
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
466a6: 4280 clrl %d0
466a8: 1039 0005 cd12 moveb 5cd12 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
466ae: b084 cmpl %d4,%d0
466b0: 6500 0098 bcsw 4674a <rtems_task_create+0xd6>
*/
/*
* Lock the allocator mutex for protection
*/
_RTEMS_Lock_allocator();
466b4: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@-
466ba: 4eb9 0004 6e04 jsr 46e04 <_API_Mutex_Lock>
* This function allocates a task control block from
* the inactive chain of free task control blocks.
*/
RTEMS_INLINE_ROUTINE Thread_Control *_RTEMS_tasks_Allocate( void )
{
return (Thread_Control *) _Objects_Allocate( &_RTEMS_tasks_Information );
466c0: 4879 0005 e4b8 pea 5e4b8 <_RTEMS_tasks_Information>
466c6: 4eb9 0004 78cc jsr 478cc <_Objects_Allocate>
* the event of an error.
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
466cc: 508f addql #8,%sp
466ce: 2640 moveal %d0,%a3
466d0: 4a80 tstl %d0
466d2: 6700 00be beqw 46792 <rtems_task_create+0x11e>
/*
* Initialize the core thread for this task.
*/
status = _Thread_Initialize(
466d6: 7007 moveq #7,%d0
466d8: 2f02 movel %d2,%sp@-
466da: c083 andl %d3,%d0
466dc: 0803 0009 btst #9,%d3
466e0: 56c1 sne %d1
466e2: 2f00 movel %d0,%sp@-
466e4: 0803 0008 btst #8,%d3
466e8: 57c0 seq %d0
466ea: 42a7 clrl %sp@-
466ec: 49c1 extbl %d1
466ee: 4481 negl %d1
466f0: 49c0 extbl %d0
466f2: 4480 negl %d0
466f4: 2f01 movel %d1,%sp@-
466f6: 2f00 movel %d0,%sp@-
466f8: 7001 moveq #1,%d0
466fa: 2f04 movel %d4,%sp@-
466fc: c085 andl %d5,%d0
466fe: 2f00 movel %d0,%sp@-
46700: 2f2e 0010 movel %fp@(16),%sp@-
46704: 42a7 clrl %sp@-
46706: 2f0b movel %a3,%sp@-
46708: 4879 0005 e4b8 pea 5e4b8 <_RTEMS_tasks_Information>
4670e: 4eb9 0004 89dc jsr 489dc <_Thread_Initialize>
NULL, /* no budget algorithm callout */
_Modes_Get_interrupt_level(initial_modes),
(Objects_Name) name
);
if ( !status ) {
46714: 4fef 002c lea %sp@(44),%sp
46718: 4a00 tstb %d0
4671a: 6746 beqs 46762 <rtems_task_create+0xee>
_RTEMS_Unlock_allocator();
return RTEMS_UNSATISFIED;
}
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
4671c: 206b 00fc moveal %a3@(252),%a0
* id - thread id
* RTEMS_SUCCESSFUL - if successful
* error code - if unsuccessful
*/
rtems_status_code rtems_task_create(
46720: 0803 000a btst #10,%d3
46724: 57c0 seq %d0
46726: 4480 negl %d0
}
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
asr->is_enabled = _Modes_Is_asr_disabled(initial_modes) ? false : true;
46728: 1140 0008 moveb %d0,%a0@(8)
*id = the_thread->Object.id;
4672c: 24ab 0008 movel %a3@(8),%a2@
);
}
#endif
_RTEMS_Unlock_allocator();
46730: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@-
46736: 4eb9 0004 6e64 jsr 46e64 <_API_Mutex_Unlock>
return RTEMS_SUCCESSFUL;
4673c: 588f addql #4,%sp
4673e: 4280 clrl %d0
}
46740: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
46746: 4e5e unlk %fp
46748: 4e75 rts
* Validate the RTEMS API priority and convert it to the core priority range.
*/
if ( !_Attributes_Is_system_task( the_attribute_set ) ) {
if ( !_RTEMS_tasks_Priority_is_valid( initial_priority ) )
return RTEMS_INVALID_PRIORITY;
4674a: 7013 moveq #19,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
4674c: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
46752: 4e5e unlk %fp <== NOT EXECUTED
46754: 4e75 rts <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46756: 7003 moveq #3,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46758: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
4675e: 4e5e unlk %fp <== NOT EXECUTED
46760: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _RTEMS_tasks_Free (
Thread_Control *the_task
)
{
_Objects_Free(
46762: 2f2b 0008 movel %a3@(8),%sp@-
46766: 4eb9 0004 7ca4 jsr 47ca4 <_Objects_Get_information_id>
4676c: 2f0b movel %a3,%sp@-
4676e: 2f00 movel %d0,%sp@-
46770: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
#if defined(RTEMS_MULTIPROCESSING)
if ( is_global )
_Objects_MP_Free_global_object( the_global_object );
#endif
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
46776: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@-
4677c: 4eb9 0004 6e64 jsr 46e64 <_API_Mutex_Unlock>
return RTEMS_UNSATISFIED;
46782: 4fef 0010 lea %sp@(16),%sp
46786: 700d moveq #13,%d0
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
46788: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3
4678e: 4e5e unlk %fp
46790: 4e75 rts
*/
the_thread = _RTEMS_tasks_Allocate();
if ( !the_thread ) {
_RTEMS_Unlock_allocator();
46792: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46798: 4eb9 0004 6e64 jsr 46e64 <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_TOO_MANY;
4679e: 588f addql #4,%sp <== NOT EXECUTED
467a0: 7005 moveq #5,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
467a2: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
467a8: 4e5e unlk %fp <== NOT EXECUTED
467aa: 4e75 rts <== NOT EXECUTED
RTEMS_API_Control *api;
ASR_Information *asr;
if ( !id )
return RTEMS_INVALID_ADDRESS;
467ac: 7009 moveq #9,%d0 <== NOT EXECUTED
}
#endif
_RTEMS_Unlock_allocator();
return RTEMS_SUCCESSFUL;
}
467ae: 4cee 0c3c ffe8 moveml %fp@(-24),%d2-%d5/%a2-%a3 <== NOT EXECUTED
467b4: 4e5e unlk %fp <== NOT EXECUTED
000467b8 <rtems_task_delete>:
*/
rtems_status_code rtems_task_delete(
rtems_id id
)
{
467b8: 4e56 fffc linkw %fp,#-4
467bc: 2f0b movel %a3,%sp@-
467be: 2f0a movel %a2,%sp@-
register Thread_Control *the_thread;
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
467c0: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@-
467c6: 4eb9 0004 6e04 jsr 46e04 <_API_Mutex_Lock>
the_thread = _Thread_Get( id, &location );
467cc: 486e fffc pea %fp@(-4)
467d0: 2f2e 0008 movel %fp@(8),%sp@-
467d4: 4eb9 0004 8940 jsr 48940 <_Thread_Get>
switch ( location ) {
467da: 4fef 000c lea %sp@(12),%sp
Objects_Locations location;
Objects_Information *the_information;
_RTEMS_Lock_allocator();
the_thread = _Thread_Get( id, &location );
467de: 2440 moveal %d0,%a2
switch ( location ) {
467e0: 4aae fffc tstl %fp@(-4)
467e4: 664a bnes 46830 <rtems_task_delete+0x78> <== NEVER TAKEN
case OBJECTS_LOCAL:
the_information = _Objects_Get_information_id( the_thread->Object.id );
467e6: 2f2a 0008 movel %a2@(8),%sp@-
467ea: 47f9 0004 7ca4 lea 47ca4 <_Objects_Get_information_id>,%a3
467f0: 4e93 jsr %a3@
0 /* Not used */
);
}
#endif
_Thread_Close( the_information, the_thread );
467f2: 2f0a movel %a2,%sp@-
467f4: 2f00 movel %d0,%sp@-
467f6: 4eb9 0004 85c4 jsr 485c4 <_Thread_Close>
467fc: 2f2a 0008 movel %a2@(8),%sp@-
46800: 4e93 jsr %a3@
46802: 2f0a movel %a2,%sp@-
46804: 2f00 movel %d0,%sp@-
46806: 4eb9 0004 7c20 jsr 47c20 <_Objects_Free>
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
4680c: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@-
46812: 4eb9 0004 6e64 jsr 46e64 <_API_Mutex_Unlock>
_Thread_Enable_dispatch();
46818: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
}
4681e: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
_RTEMS_tasks_Free( the_thread );
_RTEMS_Unlock_allocator();
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46822: 4fef 001c lea %sp@(28),%sp <== NOT EXECUTED
46826: 4280 clrl %d0 <== NOT EXECUTED
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
}
46828: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
4682c: 4e5e unlk %fp <== NOT EXECUTED
4682e: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
46830: 2f39 0005 e5f8 movel 5e5f8 <_RTEMS_Allocator_Mutex>,%sp@- <== NOT EXECUTED
46836: 4eb9 0004 6e64 jsr 46e64 <_API_Mutex_Unlock> <== NOT EXECUTED
return RTEMS_INVALID_ID;
}
4683c: 246e fff4 moveal %fp@(-12),%a2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
_RTEMS_Unlock_allocator();
return RTEMS_INVALID_ID;
46840: 588f addql #4,%sp <== NOT EXECUTED
46842: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46844: 266e fff8 moveal %fp@(-8),%a3 <== NOT EXECUTED
46848: 4e5e unlk %fp <== NOT EXECUTED
00048c94 <rtems_task_get_note>:
rtems_status_code rtems_task_get_note(
rtems_id id,
uint32_t notepad,
uint32_t *note
)
{
48c94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48c98: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
48c9c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
48c9e: 246e 0010 moveal %fp@(16),%a2 <== NOT EXECUTED
48ca2: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48ca4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
48ca8: 4a39 0006 0214 tstb 60214 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED
48cae: 6778 beqs 48d28 <rtems_task_get_note+0x94> <== NOT EXECUTED
return RTEMS_NOT_CONFIGURED;
if ( !note )
48cb0: 4a8a tstl %a2 <== NOT EXECUTED
48cb2: 6700 0090 beqw 48d44 <rtems_task_get_note+0xb0> <== NOT EXECUTED
/*
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
48cb6: 720f moveq #15,%d1 <== NOT EXECUTED
48cb8: b282 cmpl %d2,%d1 <== NOT EXECUTED
48cba: 6542 bcss 48cfe <rtems_task_get_note+0x6a> <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48cbc: 4a80 tstl %d0 <== NOT EXECUTED
48cbe: 674c beqs 48d0c <rtems_task_get_note+0x78> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
48cc0: 2079 0006 1ed0 moveal 61ed0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48cc6: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
48cca: 6746 beqs 48d12 <rtems_task_get_note+0x7e> <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
return RTEMS_SUCCESSFUL;
}
the_thread = _Thread_Get( id, &location );
48ccc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48cd0: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48cd2: 4eb9 0004 b0ec jsr 4b0ec <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48cd8: 508f addql #8,%sp <== NOT EXECUTED
48cda: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48cde: 6656 bnes 48d36 <rtems_task_get_note+0xa2> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48ce0: 2240 moveal %d0,%a1 <== NOT EXECUTED
48ce2: 2069 00fc moveal %a1@(252),%a0 <== NOT EXECUTED
48ce6: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
48cea: 4eb9 0004 b0c6 jsr 4b0c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cf0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
48cf4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48cf6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48cfa: 4e5e unlk %fp <== NOT EXECUTED
48cfc: 4e75 rts <== NOT EXECUTED
48cfe: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
return RTEMS_INVALID_NUMBER;
48d02: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d04: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d08: 4e5e unlk %fp <== NOT EXECUTED
48d0a: 4e75 rts <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48d0c: 2079 0006 1ed0 moveal 61ed0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48d12: 2068 00fc moveal %a0@(252),%a0 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48d16: 4280 clrl %d0 <== NOT EXECUTED
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
*note = api->Notepads[ notepad ];
48d18: 24b0 2c1e movel %a0@(0000001e,%d2:l:4),%a2@ <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d1c: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
48d20: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d24: 4e5e unlk %fp <== NOT EXECUTED
48d26: 4e75 rts <== NOT EXECUTED
48d28: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
48d2c: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d2e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d32: 4e5e unlk %fp <== NOT EXECUTED
48d34: 4e75 rts <== NOT EXECUTED
48d36: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48d3a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48d3c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d40: 4e5e unlk %fp <== NOT EXECUTED
48d42: 4e75 rts <== NOT EXECUTED
48d44: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
if ( !note )
return RTEMS_INVALID_ADDRESS;
48d48: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48d4a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
48d4e: 4e5e unlk %fp <== NOT EXECUTED
...
0004684c <rtems_task_ident>:
rtems_status_code rtems_task_ident(
rtems_name name,
uint32_t node,
rtems_id *id
)
{
4684c: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
46850: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
46854: 206e 0010 moveal %fp@(16),%a0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
if ( !id )
46858: 4a88 tstl %a0 <== NOT EXECUTED
4685a: 6738 beqs 46894 <rtems_task_ident+0x48> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
4685c: 4a80 tstl %d0 <== NOT EXECUTED
4685e: 660e bnes 4686e <rtems_task_ident+0x22> <== NOT EXECUTED
*id = _Thread_Executing->Object.id;
46860: 2279 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a1 <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
}
46866: 4e5e unlk %fp <== NOT EXECUTED
if ( !id )
return RTEMS_INVALID_ADDRESS;
if ( name == OBJECTS_ID_OF_SELF ) {
*id = _Thread_Executing->Object.id;
46868: 20a9 0008 movel %a1@(8),%a0@ <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
}
4686c: 4e75 rts <== NOT EXECUTED
if ( name == OBJECTS_ID_OF_SELF ) {
*id = _Thread_Executing->Object.id;
return RTEMS_SUCCESSFUL;
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
4686e: 2f08 movel %a0,%sp@- <== NOT EXECUTED
46870: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
46874: 2f00 movel %d0,%sp@- <== NOT EXECUTED
46876: 4879 0005 e4b8 pea 5e4b8 <_RTEMS_tasks_Information> <== NOT EXECUTED
4687c: 4eb9 0004 7f18 jsr 47f18 <_Objects_Name_to_id_u32> <== NOT EXECUTED
return _Status_Object_name_errors_to_status[ status ];
46882: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
46886: 41f9 0005 bfee lea 5bfee <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
4688c: 4e5e unlk %fp <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
4688e: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
}
46892: 4e75 rts <== NOT EXECUTED
)
{
Objects_Name_or_id_lookup_errors status;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46894: 7009 moveq #9,%d0 <== NOT EXECUTED
}
status = _Objects_Name_to_id_u32( &_RTEMS_tasks_Information, name, node, id );
return _Status_Object_name_errors_to_status[ status ];
}
46896: 4e5e unlk %fp <== NOT EXECUTED
...
000583b8 <rtems_task_is_suspended>:
*/
rtems_status_code rtems_task_is_suspended(
rtems_id id
)
{
583b8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
583bc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
583c0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
583c4: 4eb9 0005 c400 jsr 5c400 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
583ca: 508f addql #8,%sp <== NOT EXECUTED
583cc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
583d0: 6706 beqs 583d8 <rtems_task_is_suspended+0x20> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
583d2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
583d4: 4e5e unlk %fp <== NOT EXECUTED
583d6: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
583d8: 7202 moveq #2,%d1 <== NOT EXECUTED
583da: 2040 moveal %d0,%a0 <== NOT EXECUTED
583dc: c2a8 0010 andl %a0@(16),%d1 <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
583e0: 670c beqs 583ee <rtems_task_is_suspended+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
583e2: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
583e8: 700f moveq #15,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
583ea: 4e5e unlk %fp <== NOT EXECUTED
583ec: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
_Thread_Enable_dispatch();
583ee: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
583f4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
583f6: 4e5e unlk %fp <== NOT EXECUTED
...
0004d434 <rtems_task_mode>:
rtems_status_code rtems_task_mode(
rtems_mode mode_set,
rtems_mode mask,
rtems_mode *previous_mode_set
)
{
4d434: 4e56 ffe4 linkw %fp,#-28
4d438: 48d7 1c3c moveml %d2-%d5/%a2-%a4,%sp@
4d43c: 2a2e 0008 movel %fp@(8),%d5
4d440: 242e 000c movel %fp@(12),%d2
4d444: 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 )
4d448: 4a8c tstl %a4
4d44a: 6700 015a beqw 4d5a6 <rtems_task_mode+0x172>
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
4d44e: 2479 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a2
api = executing->API_Extensions[ THREAD_API_RTEMS ];
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4d454: 4a2a 0074 tstb %a2@(116)
4d458: 57c3 seq %d3
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
executing = _Thread_Executing;
api = executing->API_Extensions[ THREAD_API_RTEMS ];
4d45a: 266a 00fc moveal %a2@(252),%a3
asr = &api->Signal;
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
4d45e: 49c3 extbl %d3
4d460: 0283 0000 0100 andil #256,%d3
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
4d466: 4aaa 007a tstl %a2@(122)
4d46a: 6600 00cc bnew 4d538 <rtems_task_mode+0x104>
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4d46e: 4a2b 0008 tstb %a3@(8)
4d472: 57c4 seq %d4
old_mode |= _ISR_Get_level();
4d474: 4eb9 0004 9bf4 jsr 49bf4 <_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;
4d47a: 49c4 extbl %d4
4d47c: 0284 0000 0400 andil #1024,%d4
4d482: 8084 orl %d4,%d0
old_mode |= _ISR_Get_level();
4d484: 8083 orl %d3,%d0
4d486: 2880 movel %d0,%a4@
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4d488: 0802 0008 btst #8,%d2
4d48c: 670c beqs 4d49a <rtems_task_mode+0x66> <== NEVER TAKEN
executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
4d48e: 0805 0008 btst #8,%d5
4d492: 57c0 seq %d0
4d494: 4480 negl %d0
4d496: 1540 0074 moveb %d0,%a2@(116)
if ( mask & RTEMS_TIMESLICE_MASK ) {
4d49a: 0802 0009 btst #9,%d2
4d49e: 6718 beqs 4d4b8 <rtems_task_mode+0x84>
if ( _Modes_Is_timeslice(mode_set) ) {
4d4a0: 0805 0009 btst #9,%d5
4d4a4: 6700 00ee beqw 4d594 <rtems_task_mode+0x160>
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
4d4a8: 7001 moveq #1,%d0 <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4d4aa: 41f9 0005 e4f0 lea 5e4f0 <_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;
4d4b0: 2540 007a movel %d0,%a2@(122) <== NOT EXECUTED
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
4d4b4: 2550 0076 movel %a0@,%a2@(118) <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4d4b8: 7007 moveq #7,%d0
4d4ba: c082 andl %d2,%d0
4d4bc: 6712 beqs 4d4d0 <rtems_task_mode+0x9c> <== ALWAYS TAKEN
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
4d4be: 40c0 movew %sr,%d0
*/
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (
Modes_Control mode_set
)
{
return ( mode_set & RTEMS_INTERRUPT_MASK );
4d4c0: 7207 moveq #7,%d1
4d4c2: c285 andl %d5,%d1
*/
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (
Modes_Control mode_set
)
{
_ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );
4d4c4: 0280 0000 f8ff andil #63743,%d0
4d4ca: e189 lsll #8,%d1
4d4cc: 8081 orl %d1,%d0
4d4ce: 46c0 movew %d0,%sr
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
4d4d0: 0802 000a btst #10,%d2
4d4d4: 6754 beqs 4d52a <rtems_task_mode+0xf6>
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4d4d6: 4282 clrl %d2
4d4d8: 142b 0008 moveb %a3@(8),%d2
4d4dc: 4280 clrl %d0
* Output:
* *previous_mode_set - previous mode set
* always return RTEMS_SUCCESSFUL;
*/
rtems_status_code rtems_task_mode(
4d4de: 0805 000a btst #10,%d5
4d4e2: 57c1 seq %d1
4d4e4: 4481 negl %d1
is_asr_enabled = false;
needs_asr_dispatching = false;
if ( mask & RTEMS_ASR_MASK ) {
is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
if ( is_asr_enabled != asr->is_enabled ) {
4d4e6: 1001 moveb %d1,%d0
4d4e8: b082 cmpl %d2,%d0
4d4ea: 673e beqs 4d52a <rtems_task_mode+0xf6> <== ALWAYS TAKEN
)
{
rtems_signal_set _signals;
ISR_Level _level;
_ISR_Disable( _level );
4d4ec: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
asr->is_enabled = is_asr_enabled;
4d4f2: 1741 0008 moveb %d1,%a3@(8) <== NOT EXECUTED
4d4f6: 40c1 movew %sr,%d1 <== NOT EXECUTED
4d4f8: 8081 orl %d1,%d0 <== NOT EXECUTED
4d4fa: 46c0 movew %d0,%sr <== NOT EXECUTED
_signals = information->signals_pending;
4d4fc: 202b 0016 movel %a3@(22),%d0 <== NOT EXECUTED
information->signals_pending = information->signals_posted;
4d500: 276b 0012 0016 movel %a3@(18),%a3@(22) <== NOT EXECUTED
information->signals_posted = _signals;
4d506: 2740 0012 movel %d0,%a3@(18) <== NOT EXECUTED
_ISR_Enable( _level );
4d50a: 46c1 movew %d1,%sr <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4d50c: 4aab 0012 tstl %a3@(18) <== NOT EXECUTED
4d510: 56c0 sne %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d512: 7203 moveq #3,%d1 <== NOT EXECUTED
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4d514: 4480 negl %d0 <== NOT EXECUTED
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d516: b2b9 0005 e6a0 cmpl 5e6a0 <_System_state_Current>,%d1 <== NOT EXECUTED
4d51c: 6744 beqs 4d562 <rtems_task_mode+0x12e> <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4d51e: 4280 clrl %d0
}
4d520: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4
4d526: 4e5e unlk %fp
4d528: 4e75 rts
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d52a: 7203 moveq #3,%d1
/*
* This is specific to the RTEMS API
*/
is_asr_enabled = false;
needs_asr_dispatching = false;
4d52c: 4200 clrb %d0
needs_asr_dispatching = true;
}
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
4d52e: b2b9 0005 e6a0 cmpl 5e6a0 <_System_state_Current>,%d1
4d534: 66e8 bnes 4d51e <rtems_task_mode+0xea> <== NEVER TAKEN
4d536: 602a bras 4d562 <rtems_task_mode+0x12e>
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4d538: 4a2b 0008 tstb %a3@(8) <== NOT EXECUTED
4d53c: 57c4 seq %d4 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4d53e: 4eb9 0004 9bf4 jsr 49bf4 <_CPU_ISR_Get_level> <== NOT EXECUTED
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4d544: 49c4 extbl %d4 <== NOT EXECUTED
4d546: 0284 0000 0400 andil #1024,%d4 <== NOT EXECUTED
old_mode = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
old_mode |= RTEMS_NO_TIMESLICE;
else
old_mode |= RTEMS_TIMESLICE;
4d54c: 08c3 0009 bset #9,%d3 <== NOT EXECUTED
old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;
4d550: 8084 orl %d4,%d0 <== NOT EXECUTED
old_mode |= _ISR_Get_level();
4d552: 8083 orl %d3,%d0 <== NOT EXECUTED
4d554: 2880 movel %d0,%a4@ <== NOT EXECUTED
*previous_mode_set = old_mode;
/*
* These are generic thread scheduling characteristics.
*/
if ( mask & RTEMS_PREEMPT_MASK )
4d556: 0802 0008 btst #8,%d2 <== NOT EXECUTED
4d55a: 6700 ff3e beqw 4d49a <rtems_task_mode+0x66> <== NOT EXECUTED
4d55e: 6000 ff2e braw 4d48e <rtems_task_mode+0x5a> <== NOT EXECUTED
bool are_signals_pending
)
{
Thread_Control *executing;
executing = _Thread_Executing;
4d562: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
if ( are_signals_pending ||
4d568: 4a00 tstb %d0
4d56a: 660e bnes 4d57a <rtems_task_mode+0x146> <== NEVER TAKEN
4d56c: b1f9 0005 e6fc cmpal 5e6fc <_Per_CPU_Information+0x10>,%a0
4d572: 67aa beqs 4d51e <rtems_task_mode+0xea> <== ALWAYS TAKEN
(!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
4d574: 4a28 0074 tstb %a0@(116) <== NOT EXECUTED
4d578: 67a4 beqs 4d51e <rtems_task_mode+0xea> <== NOT EXECUTED
_Thread_Dispatch_necessary = true;
4d57a: 7001 moveq #1,%d0 <== NOT EXECUTED
4d57c: 13c0 0005 e704 moveb %d0,5e704 <_Per_CPU_Information+0x18> <== NOT EXECUTED
}
}
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
4d582: 4eb9 0004 87b0 jsr 487b0 <_Thread_Dispatch> <== NOT EXECUTED
}
return RTEMS_SUCCESSFUL;
}
4d588: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
if ( _System_state_Is_up( _System_state_Get() ) ) {
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
4d58e: 4280 clrl %d0 <== NOT EXECUTED
}
4d590: 4e5e unlk %fp <== NOT EXECUTED
4d592: 4e75 rts <== NOT EXECUTED
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4d594: 7007 moveq #7,%d0
4d596: c082 andl %d2,%d0
if ( mask & RTEMS_TIMESLICE_MASK ) {
if ( _Modes_Is_timeslice(mode_set) ) {
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
executing->cpu_time_budget = _Thread_Ticks_per_timeslice;
} else
executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE;
4d598: 42aa 007a clrl %a2@(122)
}
/*
* Set the new interrupt level
*/
if ( mask & RTEMS_INTERRUPT_MASK )
4d59c: 4a80 tstl %d0
4d59e: 6700 ff30 beqw 4d4d0 <rtems_task_mode+0x9c>
4d5a2: 6000 ff1a braw 4d4be <rtems_task_mode+0x8a>
bool is_asr_enabled = false;
bool needs_asr_dispatching = false;
rtems_mode old_mode;
if ( !previous_mode_set )
return RTEMS_INVALID_ADDRESS;
4d5a6: 7009 moveq #9,%d0 <== NOT EXECUTED
if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
_Thread_Dispatch();
}
return RTEMS_SUCCESSFUL;
}
4d5a8: 4cee 1c3c ffe4 moveml %fp@(-28),%d2-%d5/%a2-%a4 <== NOT EXECUTED
4d5ae: 4e5e unlk %fp <== NOT EXECUTED
...
000474c8 <rtems_task_restart>:
rtems_status_code rtems_task_restart(
rtems_id id,
uint32_t argument
)
{
474c8: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
474cc: 486e fffc pea %fp@(-4) <== NOT EXECUTED
474d0: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
474d4: 4eb9 0004 9554 jsr 49554 <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
474da: 508f addql #8,%sp <== NOT EXECUTED
474dc: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
474e0: 6622 bnes 47504 <rtems_task_restart+0x3c> <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( _Thread_Restart( the_thread, NULL, argument ) ) {
474e2: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
474e6: 42a7 clrl %sp@- <== NOT EXECUTED
474e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
474ea: 4eb9 0004 9de8 jsr 49de8 <_Thread_Restart> <== NOT EXECUTED
474f0: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
474f4: 4a00 tstb %d0 <== NOT EXECUTED
474f6: 6612 bnes 4750a <rtems_task_restart+0x42> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
474f8: 4eb9 0004 952e jsr 4952e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
474fe: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47500: 4e5e unlk %fp <== NOT EXECUTED
47502: 4e75 rts <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47504: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47506: 4e5e unlk %fp <== NOT EXECUTED
47508: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Thread_Restart( the_thread, NULL, argument ) ) {
_Thread_Enable_dispatch();
4750a: 4eb9 0004 952e jsr 4952e <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47510: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47512: 4e5e unlk %fp <== NOT EXECUTED
...
00049f28 <rtems_task_resume>:
*/
rtems_status_code rtems_task_resume(
rtems_id id
)
{
49f28: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
49f2c: 486e fffc pea %fp@(-4)
49f30: 2f2e 0008 movel %fp@(8),%sp@-
49f34: 4eb9 0004 bfe0 jsr 4bfe0 <_Thread_Get>
switch ( location ) {
49f3a: 508f addql #8,%sp
49f3c: 4aae fffc tstl %fp@(-4)
49f40: 6706 beqs 49f48 <rtems_task_resume+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
49f42: 7004 moveq #4,%d0 <== NOT EXECUTED
}
49f44: 4e5e unlk %fp <== NOT EXECUTED
49f46: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
49f48: 7202 moveq #2,%d1
49f4a: 2040 moveal %d0,%a0
49f4c: c2a8 0010 andl %a0@(16),%d1
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( _States_Is_suspended( the_thread->current_state ) ) {
49f50: 660c bnes 49f5e <rtems_task_resume+0x36> <== ALWAYS TAKEN
_Thread_Resume( the_thread, true );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
49f52: 4eb9 0004 bfba jsr 4bfba <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
49f58: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f5a: 4e5e unlk %fp <== NOT EXECUTED
49f5c: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( _States_Is_suspended( the_thread->current_state ) ) {
_Thread_Resume( the_thread, true );
49f5e: 4878 0001 pea 1 <ADD>
49f62: 2f00 movel %d0,%sp@-
49f64: 4eb9 0004 c874 jsr 4c874 <_Thread_Resume>
_Thread_Enable_dispatch();
49f6a: 4eb9 0004 bfba jsr 4bfba <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
49f70: 508f addql #8,%sp
49f72: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
49f74: 4e5e unlk %fp <== NOT EXECUTED
00048e40 <rtems_task_set_note>:
rtems_status_code rtems_task_set_note(
rtems_id id,
uint32_t notepad,
uint32_t note
)
{
48e40: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
48e44: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
48e48: 2f02 movel %d2,%sp@- <== NOT EXECUTED
48e4a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
48e4e: 4a39 0006 0214 tstb 60214 <Configuration_RTEMS_API+0x4> <== NOT EXECUTED
48e54: 676e beqs 48ec4 <rtems_task_set_note+0x84> <== NOT EXECUTED
/*
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
48e56: 720f moveq #15,%d1 <== NOT EXECUTED
48e58: b282 cmpl %d2,%d1 <== NOT EXECUTED
48e5a: 6542 bcss 48e9e <rtems_task_set_note+0x5e> <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48e5c: 4a80 tstl %d0 <== NOT EXECUTED
48e5e: 6748 beqs 48ea8 <rtems_task_set_note+0x68> <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
48e60: 2079 0006 1ed0 moveal 61ed0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48e66: b0a8 0008 cmpl %a0@(8),%d0 <== NOT EXECUTED
48e6a: 6742 beqs 48eae <rtems_task_set_note+0x6e> <== NOT EXECUTED
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
return RTEMS_SUCCESSFUL;
}
the_thread = _Thread_Get( id, &location );
48e6c: 486e fffc pea %fp@(-4) <== NOT EXECUTED
48e70: 2f00 movel %d0,%sp@- <== NOT EXECUTED
48e72: 4eb9 0004 b0ec jsr 4b0ec <_Thread_Get> <== NOT EXECUTED
switch ( location ) {
48e78: 508f addql #8,%sp <== NOT EXECUTED
48e7a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
48e7e: 664e bnes 48ece <rtems_task_set_note+0x8e> <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48e80: 2240 moveal %d0,%a1 <== NOT EXECUTED
48e82: 202e 0010 movel %fp@(16),%d0 <== NOT EXECUTED
48e86: 2069 00fc moveal %a1@(252),%a0 <== NOT EXECUTED
48e8a: 2180 2c1e movel %d0,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
_Thread_Enable_dispatch();
48e8e: 4eb9 0004 b0c6 jsr 4b0c6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e94: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
api = the_thread->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
48e98: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48e9a: 4e5e unlk %fp <== NOT EXECUTED
48e9c: 4e75 rts <== NOT EXECUTED
48e9e: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
* NOTE: There is no check for < RTEMS_NOTEPAD_FIRST because that would
* be checking an unsigned number for being negative.
*/
if ( notepad > RTEMS_NOTEPAD_LAST )
return RTEMS_INVALID_NUMBER;
48ea2: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48ea4: 4e5e unlk %fp <== NOT EXECUTED
48ea6: 4e75 rts <== NOT EXECUTED
/*
* Optimize the most likely case to avoid the Thread_Dispatch.
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
48ea8: 2079 0006 1ed0 moveal 61ed0 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48eae: 226e 0010 moveal %fp@(16),%a1 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
48eb2: 4280 clrl %d0 <== NOT EXECUTED
*/
if ( _Objects_Are_ids_equal( id, OBJECTS_ID_OF_SELF ) ||
_Objects_Are_ids_equal( id, _Thread_Executing->Object.id ) ) {
api = _Thread_Executing->API_Extensions[ THREAD_API_RTEMS ];
api->Notepads[ notepad ] = note;
48eb4: 2068 00fc moveal %a0@(252),%a0 <== NOT EXECUTED
48eb8: 2189 2c1e movel %a1,%a0@(0000001e,%d2:l:4) <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48ebc: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
48ec0: 4e5e unlk %fp <== NOT EXECUTED
48ec2: 4e75 rts <== NOT EXECUTED
48ec4: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
RTEMS_API_Control *api;
if ( !rtems_configuration_get_notepads_enabled() )
return RTEMS_NOT_CONFIGURED;
48ec8: 7016 moveq #22,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
48eca: 4e5e unlk %fp <== NOT EXECUTED
48ecc: 4e75 rts <== NOT EXECUTED
48ece: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
48ed2: 7004 moveq #4,%d0 <== NOT EXECUTED
}
48ed4: 4e5e unlk %fp <== NOT EXECUTED
0004ad10 <rtems_task_set_priority>:
rtems_status_code rtems_task_set_priority(
rtems_id id,
rtems_task_priority new_priority,
rtems_task_priority *old_priority
)
{
4ad10: 4e56 fffc linkw %fp,#-4
4ad14: 2f0a movel %a2,%sp@-
4ad16: 246e 0010 moveal %fp@(16),%a2
4ad1a: 2f02 movel %d2,%sp@-
4ad1c: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
4ad20: 670c beqs 4ad2e <rtems_task_set_priority+0x1e> <== NEVER TAKEN
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
4ad22: 4280 clrl %d0
4ad24: 1039 0006 1152 moveb 61152 <rtems_maximum_priority>,%d0
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
4ad2a: b082 cmpl %d2,%d0
4ad2c: 6566 bcss 4ad94 <rtems_task_set_priority+0x84> <== NEVER TAKEN
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
4ad2e: 4a8a tstl %a2
4ad30: 6770 beqs 4ada2 <rtems_task_set_priority+0x92> <== NEVER TAKEN
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
4ad32: 486e fffc pea %fp@(-4)
4ad36: 2f2e 0008 movel %fp@(8),%sp@-
4ad3a: 4eb9 0004 cf74 jsr 4cf74 <_Thread_Get>
switch ( location ) {
4ad40: 508f addql #8,%sp
4ad42: 4aae fffc tstl %fp@(-4)
4ad46: 663e bnes 4ad86 <rtems_task_set_priority+0x76> <== NEVER TAKEN
case OBJECTS_LOCAL:
/* XXX need helper to "convert" from core priority */
*old_priority = the_thread->current_priority;
4ad48: 2040 moveal %d0,%a0
4ad4a: 24a8 0014 movel %a0@(20),%a2@
if ( new_priority != RTEMS_CURRENT_PRIORITY ) {
4ad4e: 4a82 tstl %d2
4ad50: 6720 beqs 4ad72 <rtems_task_set_priority+0x62> <== NEVER TAKEN
the_thread->real_priority = new_priority;
4ad52: 2142 0018 movel %d2,%a0@(24)
if ( the_thread->resource_count == 0 ||
4ad56: 4aa8 001c tstl %a0@(28)
4ad5a: 6706 beqs 4ad62 <rtems_task_set_priority+0x52> <== ALWAYS TAKEN
4ad5c: b4a8 0014 cmpl %a0@(20),%d2 <== NOT EXECUTED
4ad60: 6410 bccs 4ad72 <rtems_task_set_priority+0x62> <== NOT EXECUTED
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
4ad62: 42a7 clrl %sp@-
4ad64: 2f02 movel %d2,%sp@-
4ad66: 2f00 movel %d0,%sp@-
4ad68: 4eb9 0004 ca58 jsr 4ca58 <_Thread_Change_priority>
4ad6e: 4fef 000c lea %sp@(12),%sp
}
_Thread_Enable_dispatch();
4ad72: 4eb9 0004 cf4e jsr 4cf4e <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad78: 242e fff4 movel %fp@(-12),%d2
if ( the_thread->resource_count == 0 ||
the_thread->current_priority > new_priority )
_Thread_Change_priority( the_thread, new_priority, false );
}
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4ad7c: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad7e: 246e fff8 moveal %fp@(-8),%a2
4ad82: 4e5e unlk %fp
4ad84: 4e75 rts
4ad86: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
4ad8a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
4ad8c: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ad90: 4e5e unlk %fp <== NOT EXECUTED
4ad92: 4e75 rts <== NOT EXECUTED
4ad94: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
register Thread_Control *the_thread;
Objects_Locations location;
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
4ad98: 7013 moveq #19,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ad9a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4ad9e: 4e5e unlk %fp <== NOT EXECUTED
4ada0: 4e75 rts <== NOT EXECUTED
4ada2: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if ( new_priority != RTEMS_CURRENT_PRIORITY &&
!_RTEMS_tasks_Priority_is_valid( new_priority ) )
return RTEMS_INVALID_PRIORITY;
if ( !old_priority )
return RTEMS_INVALID_ADDRESS;
4ada6: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4ada8: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4adac: 4e5e unlk %fp <== NOT EXECUTED
00046924 <rtems_task_start>:
rtems_status_code rtems_task_start(
rtems_id id,
rtems_task_entry entry_point,
rtems_task_argument argument
)
{
46924: 4e56 fffc linkw %fp,#-4
46928: 2f02 movel %d2,%sp@-
4692a: 242e 000c movel %fp@(12),%d2
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
4692e: 674a beqs 4697a <rtems_task_start+0x56>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get( id, &location );
46930: 486e fffc pea %fp@(-4)
46934: 2f2e 0008 movel %fp@(8),%sp@-
46938: 4eb9 0004 8940 jsr 48940 <_Thread_Get>
switch ( location ) {
4693e: 508f addql #8,%sp
46940: 4aae fffc tstl %fp@(-4)
46944: 662a bnes 46970 <rtems_task_start+0x4c> <== NEVER TAKEN
case OBJECTS_LOCAL:
if ( _Thread_Start(
46946: 2f2e 0010 movel %fp@(16),%sp@-
4694a: 42a7 clrl %sp@-
4694c: 2f02 movel %d2,%sp@-
4694e: 42a7 clrl %sp@-
46950: 2f00 movel %d0,%sp@-
46952: 4eb9 0004 93b0 jsr 493b0 <_Thread_Start>
46958: 4fef 0014 lea %sp@(20),%sp
4695c: 4a00 tstb %d0
4695e: 6624 bnes 46984 <rtems_task_start+0x60> <== ALWAYS TAKEN
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
46960: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46966: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
4696a: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4696c: 4e5e unlk %fp <== NOT EXECUTED
4696e: 4e75 rts <== NOT EXECUTED
46970: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46974: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46976: 4e5e unlk %fp <== NOT EXECUTED
46978: 4e75 rts <== NOT EXECUTED
4697a: 242e fff8 movel %fp@(-8),%d2
{
register Thread_Control *the_thread;
Objects_Locations location;
if ( entry_point == NULL )
return RTEMS_INVALID_ADDRESS;
4697e: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46980: 4e5e unlk %fp
46982: 4e75 rts
switch ( location ) {
case OBJECTS_LOCAL:
if ( _Thread_Start(
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
46984: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4698a: 242e fff8 movel %fp@(-8),%d2
case OBJECTS_LOCAL:
if ( _Thread_Start(
the_thread, THREAD_START_NUMERIC, entry_point, NULL, argument ) ) {
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4698e: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46990: 4e5e unlk %fp <== NOT EXECUTED
00046994 <rtems_task_suspend>:
*/
rtems_status_code rtems_task_suspend(
rtems_id id
)
{
46994: 4e56 fffc linkw %fp,#-4
register Thread_Control *the_thread;
Objects_Locations location;
the_thread = _Thread_Get( id, &location );
46998: 486e fffc pea %fp@(-4)
4699c: 2f2e 0008 movel %fp@(8),%sp@-
469a0: 4eb9 0004 8940 jsr 48940 <_Thread_Get>
switch ( location ) {
469a6: 508f addql #8,%sp
469a8: 4aae fffc tstl %fp@(-4)
469ac: 6706 beqs 469b4 <rtems_task_suspend+0x20> <== ALWAYS TAKEN
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
469ae: 7004 moveq #4,%d0 <== NOT EXECUTED
}
469b0: 4e5e unlk %fp <== NOT EXECUTED
469b2: 4e75 rts <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _States_Is_suspended (
States_Control the_states
)
{
return (the_states & STATES_SUSPENDED);
469b4: 7202 moveq #2,%d1
469b6: 2040 moveal %d0,%a0
469b8: c2a8 0010 andl %a0@(16),%d1
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
469bc: 670c beqs 469ca <rtems_task_suspend+0x36> <== ALWAYS TAKEN
_Thread_Suspend( the_thread );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
_Thread_Enable_dispatch();
469be: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_ALREADY_SUSPENDED;
469c4: 700f moveq #15,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
469c6: 4e5e unlk %fp <== NOT EXECUTED
469c8: 4e75 rts <== NOT EXECUTED
the_thread = _Thread_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_States_Is_suspended( the_thread->current_state ) ) {
_Thread_Suspend( the_thread );
469ca: 2f00 movel %d0,%sp@-
469cc: 4eb9 0004 940c jsr 4940c <_Thread_Suspend>
_Thread_Enable_dispatch();
469d2: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
469d8: 588f addql #4,%sp
469da: 4280 clrl %d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
469dc: 4e5e unlk %fp <== NOT EXECUTED
000477c8 <rtems_task_variable_add>:
rtems_status_code rtems_task_variable_add(
rtems_id tid,
void **ptr,
void (*dtor)(void *)
)
{
477c8: 4e56 fff0 linkw %fp,#-16
477cc: 48d7 0c04 moveml %d2/%a2-%a3,%sp@
477d0: 246e 000c moveal %fp@(12),%a2
477d4: 242e 0010 movel %fp@(16),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
477d8: 4a8a tstl %a2
477da: 6700 009a beqw 47876 <rtems_task_variable_add+0xae>
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477de: 486e fffc pea %fp@(-4) <== NOT EXECUTED
477e2: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
477e6: 4eb9 0004 98dc jsr 498dc <_Thread_Get> <== NOT EXECUTED
switch (location) {
477ec: 508f addql #8,%sp <== NOT EXECUTED
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
477ee: 2640 moveal %d0,%a3 <== NOT EXECUTED
switch (location) {
477f0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
477f4: 664c bnes 47842 <rtems_task_variable_add+0x7a> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
477f6: 206b 0108 moveal %a3@(264),%a0 <== NOT EXECUTED
while (tvp) {
477fa: 4a88 tstl %a0 <== NOT EXECUTED
477fc: 670c beqs 4780a <rtems_task_variable_add+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
477fe: b5e8 0004 cmpal %a0@(4),%a2 <== NOT EXECUTED
47802: 674a beqs 4784e <rtems_task_variable_add+0x86> <== NOT EXECUTED
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
47804: 2050 moveal %a0@,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
47806: 4a88 tstl %a0 <== NOT EXECUTED
47808: 66f4 bnes 477fe <rtems_task_variable_add+0x36> <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
4780a: 4878 0014 pea 14 <OPER2> <== NOT EXECUTED
4780e: 4eb9 0004 aa6a jsr 4aa6a <_Workspace_Allocate> <== NOT EXECUTED
if (new == NULL) {
47814: 588f addql #4,%sp <== NOT EXECUTED
/*
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
47816: 2040 moveal %d0,%a0 <== NOT EXECUTED
if (new == NULL) {
47818: 4a80 tstl %d0 <== NOT EXECUTED
4781a: 6748 beqs 47864 <rtems_task_variable_add+0x9c> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
4781c: 2152 0008 movel %a2@,%a0@(8) <== NOT EXECUTED
new->ptr = ptr;
new->dtor = dtor;
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
47820: 20ab 0108 movel %a3@(264),%a0@ <== NOT EXECUTED
if (new == NULL) {
_Thread_Enable_dispatch();
return RTEMS_NO_MEMORY;
}
new->gval = *ptr;
new->ptr = ptr;
47824: 214a 0004 movel %a2,%a0@(4) <== NOT EXECUTED
new->dtor = dtor;
47828: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
4782c: 2740 0108 movel %d0,%a3@(264) <== NOT EXECUTED
_Thread_Enable_dispatch();
47830: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47836: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
new->dtor = dtor;
new->next = (struct rtems_task_variable_tt *)the_thread->task_variables;
the_thread->task_variables = new;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4783c: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4783e: 4e5e unlk %fp <== NOT EXECUTED
47840: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47842: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47844: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
4784a: 4e5e unlk %fp <== NOT EXECUTED
4784c: 4e75 rts <== NOT EXECUTED
* Figure out if the variable is already in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
tvp->dtor = dtor;
4784e: 2142 0010 movel %d2,%a0@(16) <== NOT EXECUTED
_Thread_Enable_dispatch();
47852: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47858: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
tvp->dtor = dtor;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
4785e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47860: 4e5e unlk %fp <== NOT EXECUTED
47862: 4e75 rts <== NOT EXECUTED
* Now allocate memory for this task variable.
*/
new = (rtems_task_variable_t *)
_Workspace_Allocate(sizeof(rtems_task_variable_t));
if (new == NULL) {
_Thread_Enable_dispatch();
47864: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_NO_MEMORY;
4786a: 701a moveq #26,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4786c: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
47872: 4e5e unlk %fp <== NOT EXECUTED
47874: 4e75 rts <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *new;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
47876: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47878: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3
4787e: 4e5e unlk %fp
...
00047884 <rtems_task_variable_delete>:
rtems_status_code rtems_task_variable_delete(
rtems_id tid,
void **ptr
)
{
47884: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
47888: 2f02 movel %d2,%sp@- <== NOT EXECUTED
4788a: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
4788e: 6772 beqs 47902 <rtems_task_variable_delete+0x7e><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
prev = NULL;
the_thread = _Thread_Get (tid, &location);
47890: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47894: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
47898: 4eb9 0004 98dc jsr 498dc <_Thread_Get> <== NOT EXECUTED
switch (location) {
4789e: 508f addql #8,%sp <== NOT EXECUTED
478a0: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
478a4: 6634 bnes 478da <rtems_task_variable_delete+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
478a6: 2040 moveal %d0,%a0 <== NOT EXECUTED
478a8: 2268 0108 moveal %a0@(264),%a1 <== NOT EXECUTED
while (tvp) {
478ac: 4a89 tstl %a1 <== NOT EXECUTED
478ae: 671a beqs 478ca <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
478b0: b4a9 0004 cmpl %a1@(4),%d2 <== NOT EXECUTED
478b4: 6756 beqs 4790c <rtems_task_variable_delete+0x88><== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
478b6: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
478b8: 4a88 tstl %a0 <== NOT EXECUTED
478ba: 670e beqs 478ca <rtems_task_variable_delete+0x46><== NOT EXECUTED
if (tvp->ptr == ptr) {
478bc: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED
478c0: 6722 beqs 478e4 <rtems_task_variable_delete+0x60><== NOT EXECUTED
478c2: 2248 moveal %a0,%a1 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
478c4: 2051 moveal %a1@,%a0 <== NOT EXECUTED
the_thread = _Thread_Get (tid, &location);
switch (location) {
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
478c6: 4a88 tstl %a0 <== NOT EXECUTED
478c8: 66f2 bnes 478bc <rtems_task_variable_delete+0x38><== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
478ca: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478d0: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
}
prev = tvp;
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
478d4: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478d6: 4e5e unlk %fp <== NOT EXECUTED
478d8: 4e75 rts <== NOT EXECUTED
478da: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
478de: 7004 moveq #4,%d0 <== NOT EXECUTED
}
478e0: 4e5e unlk %fp <== NOT EXECUTED
478e2: 4e75 rts <== NOT EXECUTED
case OBJECTS_LOCAL:
tvp = the_thread->task_variables;
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
478e4: 2290 movel %a0@,%a1@ <== NOT EXECUTED
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
478e6: 2f08 movel %a0,%sp@- <== NOT EXECUTED
478e8: 2f00 movel %d0,%sp@- <== NOT EXECUTED
478ea: 4eb9 0004 79b8 jsr 479b8 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
478f0: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
478f6: 508f addql #8,%sp <== NOT EXECUTED
478f8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
478fa: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
478fe: 4e5e unlk %fp <== NOT EXECUTED
47900: 4e75 rts <== NOT EXECUTED
47902: 242e fff8 movel %fp@(-8),%d2 <== NOT EXECUTED
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp, *prev;
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
47906: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47908: 4e5e unlk %fp <== NOT EXECUTED
4790a: 4e75 rts <== NOT EXECUTED
while (tvp) {
if (tvp->ptr == ptr) {
if (prev)
prev->next = tvp->next;
else
the_thread->task_variables = (rtems_task_variable_t *)tvp->next;
4790c: 2040 moveal %d0,%a0 <== NOT EXECUTED
4790e: 2151 0108 movel %a1@,%a0@(264) <== NOT EXECUTED
47912: 2049 moveal %a1,%a0 <== NOT EXECUTED
_RTEMS_Tasks_Invoke_task_variable_dtor( the_thread, tvp );
47914: 2f08 movel %a0,%sp@- <== NOT EXECUTED
47916: 2f00 movel %d0,%sp@- <== NOT EXECUTED
47918: 4eb9 0004 79b8 jsr 479b8 <_RTEMS_Tasks_Invoke_task_variable_dtor><== NOT EXECUTED
_Thread_Enable_dispatch();
4791e: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
47924: 508f addql #8,%sp <== NOT EXECUTED
47926: 4280 clrl %d0 <== NOT EXECUTED
47928: 60d0 bras 478fa <rtems_task_variable_delete+0x76><== NOT EXECUTED
...
0004792c <rtems_task_variable_get>:
rtems_status_code rtems_task_variable_get(
rtems_id tid,
void **ptr,
void **result
)
{
4792c: 4e56 fffc linkw %fp,#-4
47930: 2f0a movel %a2,%sp@-
47932: 246e 0010 moveal %fp@(16),%a2
47936: 2f02 movel %d2,%sp@-
47938: 242e 000c movel %fp@(12),%d2
Thread_Control *the_thread;
Objects_Locations location;
rtems_task_variable_t *tvp;
if ( !ptr )
4793c: 6752 beqs 47990 <rtems_task_variable_get+0x64> <== ALWAYS TAKEN
return RTEMS_INVALID_ADDRESS;
if ( !result )
4793e: 4a8a tstl %a2 <== NOT EXECUTED
47940: 674e beqs 47990 <rtems_task_variable_get+0x64> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_thread = _Thread_Get (tid, &location);
47942: 486e fffc pea %fp@(-4) <== NOT EXECUTED
47946: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4794a: 4eb9 0004 98dc jsr 498dc <_Thread_Get> <== NOT EXECUTED
switch (location) {
47950: 508f addql #8,%sp <== NOT EXECUTED
47952: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
47956: 662a bnes 47982 <rtems_task_variable_get+0x56> <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
47958: 2240 moveal %d0,%a1 <== NOT EXECUTED
4795a: 2069 0108 moveal %a1@(264),%a0 <== NOT EXECUTED
while (tvp) {
4795e: 4a88 tstl %a0 <== NOT EXECUTED
47960: 670c beqs 4796e <rtems_task_variable_get+0x42> <== NOT EXECUTED
if (tvp->ptr == ptr) {
47962: b4a8 0004 cmpl %a0@(4),%d2 <== NOT EXECUTED
47966: 6736 beqs 4799e <rtems_task_variable_get+0x72> <== NOT EXECUTED
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
47968: 2050 moveal %a0@,%a0 <== NOT EXECUTED
case OBJECTS_LOCAL:
/*
* Figure out if the variable is in this task's list.
*/
tvp = the_thread->task_variables;
while (tvp) {
4796a: 4a88 tstl %a0 <== NOT EXECUTED
4796c: 66f4 bnes 47962 <rtems_task_variable_get+0x36> <== NOT EXECUTED
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
4796e: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47974: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
tvp = (rtems_task_variable_t *)tvp->next;
}
_Thread_Enable_dispatch();
return RTEMS_INVALID_ADDRESS;
47978: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
4797a: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4797e: 4e5e unlk %fp <== NOT EXECUTED
47980: 4e75 rts <== NOT EXECUTED
47982: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
47986: 7004 moveq #4,%d0 <== NOT EXECUTED
}
47988: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
4798c: 4e5e unlk %fp <== NOT EXECUTED
4798e: 4e75 rts <== NOT EXECUTED
47990: 242e fff4 movel %fp@(-12),%d2
if ( !ptr )
return RTEMS_INVALID_ADDRESS;
if ( !result )
return RTEMS_INVALID_ADDRESS;
47994: 7009 moveq #9,%d0
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
47996: 246e fff8 moveal %fp@(-8),%a2
4799a: 4e5e unlk %fp
4799c: 4e75 rts
if (tvp->ptr == ptr) {
/*
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
4799e: 24a8 000c movel %a0@(12),%a2@ <== NOT EXECUTED
_Thread_Enable_dispatch();
479a2: 4eb9 0004 98b6 jsr 498b6 <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479a8: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* Should this return the current (i.e not the
* saved) value if `tid' is the current task?
*/
*result = tvp->tval;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
479ac: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
479ae: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
479b2: 4e5e unlk %fp <== NOT EXECUTED
...
000469e0 <rtems_task_wake_after>:
*/
rtems_status_code rtems_task_wake_after(
rtems_interval ticks
)
{
469e0: 4e56 0000 linkw %fp,#0
469e4: 2039 0005 e538 movel 5e538 <_Thread_Dispatch_disable_level>,%d0
469ea: 5280 addql #1,%d0
469ec: 2f02 movel %d2,%sp@-
469ee: 242e 0008 movel %fp@(8),%d2
469f2: 23c0 0005 e538 movel %d0,5e538 <_Thread_Dispatch_disable_level>
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
469f8: 4a82 tstl %d2
469fa: 6758 beqs 46a54 <rtems_task_wake_after+0x74> <== NEVER TAKEN
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
469fc: 4878 0008 pea 8 <DIVIDE_BY_ZERO>
46a00: 2f39 0005 e6f8 movel 5e6f8 <_Per_CPU_Information+0xc>,%sp@-
46a06: 4eb9 0004 91fc jsr 491fc <_Thread_Set_state>
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
46a0c: 2079 0005 e6f8 moveal 5e6f8 <_Per_CPU_Information+0xc>,%a0
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
46a12: 203c 0004 8774 movel #296820,%d0
46a18: 2140 0064 movel %d0,%a0@(100)
_Thread_Disable_dispatch();
if ( ticks == 0 ) {
_Scheduler_Yield();
} else {
_Thread_Set_state( _Thread_Executing, STATES_DELAYING );
_Watchdog_Initialize(
46a1c: 2028 0008 movel %a0@(8),%d0
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46a20: 2142 0054 movel %d2,%a0@(84)
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
46a24: 2140 0068 movel %d0,%a0@(104)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46a28: 42a8 0050 clrl %a0@(80)
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
46a2c: 42a8 006c clrl %a0@(108)
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46a30: 4868 0048 pea %a0@(72)
46a34: 4879 0005 e618 pea 5e618 <_Watchdog_Ticks_chain>
46a3a: 4eb9 0004 9804 jsr 49804 <_Watchdog_Insert>
46a40: 4fef 0010 lea %sp@(16),%sp
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a44: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
46a4a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
46a4e: 4280 clrl %d0 <== NOT EXECUTED
46a50: 4e5e unlk %fp <== NOT EXECUTED
46a52: 4e75 rts <== NOT EXECUTED
* always operates on the scheduler that 'owns' the currently executing
* thread.
*/
RTEMS_INLINE_ROUTINE void _Scheduler_Yield( void )
{
_Scheduler.Operations.yield( &_Scheduler );
46a54: 4879 0005 e5be pea 5e5be <_Scheduler> <== NOT EXECUTED
46a5a: 2079 0005 e5c6 moveal 5e5c6 <_Scheduler+0x8>,%a0 <== NOT EXECUTED
46a60: 4e90 jsr %a0@ <== NOT EXECUTED
46a62: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_ticks( &_Thread_Executing->Timer, ticks );
}
_Thread_Enable_dispatch();
46a64: 4eb9 0004 891a jsr 4891a <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
46a6a: 242e fffc movel %fp@(-4),%d2 <== NOT EXECUTED
46a6e: 4280 clrl %d0 <== NOT EXECUTED
46a70: 4e5e unlk %fp <== NOT EXECUTED
00047978 <rtems_task_wake_when>:
*/
rtems_status_code rtems_task_wake_when(
rtems_time_of_day *time_buffer
)
{
47978: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
4797c: 2f0a movel %a2,%sp@- <== NOT EXECUTED
4797e: 246e 0008 moveal %fp@(8),%a2 <== NOT EXECUTED
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
47982: 4a39 0005 fed0 tstb 5fed0 <_TOD_Is_set> <== NOT EXECUTED
47988: 6700 00aa beqw 47a34 <rtems_task_wake_when+0xbc> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
4798c: 4a8a tstl %a2 <== NOT EXECUTED
4798e: 6700 00ae beqw 47a3e <rtems_task_wake_when+0xc6> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
time_buffer->ticks = 0;
47992: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
if ( !_TOD_Validate( time_buffer ) )
47996: 2f0a movel %a2,%sp@- <== NOT EXECUTED
47998: 4eb9 0004 6c84 jsr 46c84 <_TOD_Validate> <== NOT EXECUTED
4799e: 588f addql #4,%sp <== NOT EXECUTED
479a0: 4a00 tstb %d0 <== NOT EXECUTED
479a2: 660a bnes 479ae <rtems_task_wake_when+0x36> <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
479a4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
479a8: 7014 moveq #20,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
479aa: 4e5e unlk %fp <== NOT EXECUTED
479ac: 4e75 rts <== NOT EXECUTED
time_buffer->ticks = 0;
if ( !_TOD_Validate( time_buffer ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( time_buffer );
479ae: 2f0a movel %a2,%sp@- <== NOT EXECUTED
479b0: 4eb9 0004 6b7c jsr 46b7c <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
479b6: 588f addql #4,%sp <== NOT EXECUTED
479b8: b0b9 0005 ff6a cmpl 5ff6a <_TOD_Now>,%d0 <== NOT EXECUTED
479be: 63e4 blss 479a4 <rtems_task_wake_when+0x2c> <== NOT EXECUTED
479c0: 2239 0005 fec0 movel 5fec0 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
479c6: 5281 addql #1,%d1 <== NOT EXECUTED
479c8: 23c1 0005 fec0 movel %d1,5fec0 <_Thread_Dispatch_disable_level><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
479ce: 4878 0010 pea 10 <INVALID_OPERATION> <== NOT EXECUTED
479d2: 2f39 0006 0080 movel 60080 <_Per_CPU_Information+0xc>,%sp@-<== NOT EXECUTED
479d8: 2d40 fffc movel %d0,%fp@(-4) <== NOT EXECUTED
479dc: 4eb9 0004 a1e8 jsr 4a1e8 <_Thread_Set_state> <== NOT EXECUTED
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
NULL
);
_Watchdog_Insert_seconds(
479e2: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
479e6: 90b9 0005 ff6a subl 5ff6a <_TOD_Now>,%d0 <== NOT EXECUTED
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
_Watchdog_Initialize(
&_Thread_Executing->Timer,
_Thread_Delay_ended,
_Thread_Executing->Object.id,
479ec: 2079 0006 0080 moveal 60080 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
NULL
);
_Watchdog_Insert_seconds(
479f2: 2140 0054 movel %d0,%a0@(84) <== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
479f6: 203c 0004 9760 movel #300896,%d0 <== NOT EXECUTED
479fc: 2140 0064 movel %d0,%a0@(100) <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
_Thread_Disable_dispatch();
_Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_TIME );
_Watchdog_Initialize(
47a00: 2028 0008 movel %a0@(8),%d0 <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
47a04: 42a8 0050 clrl %a0@(80) <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
47a08: 2140 0068 movel %d0,%a0@(104) <== NOT EXECUTED
the_watchdog->user_data = user_data;
47a0c: 42a8 006c clrl %a0@(108) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
47a10: 4868 0048 pea %a0@(72) <== NOT EXECUTED
47a14: 4879 0005 ff94 pea 5ff94 <_Watchdog_Seconds_chain> <== NOT EXECUTED
47a1a: 4eb9 0004 a884 jsr 4a884 <_Watchdog_Insert> <== NOT EXECUTED
);
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
47a20: 4eb9 0004 9906 jsr 49906 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
}
47a26: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
_Watchdog_Insert_seconds(
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
47a2a: 4fef 0010 lea %sp@(16),%sp <== NOT EXECUTED
47a2e: 4280 clrl %d0 <== NOT EXECUTED
}
47a30: 4e5e unlk %fp <== NOT EXECUTED
47a32: 4e75 rts <== NOT EXECUTED
47a34: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
)
{
Watchdog_Interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
47a38: 700b moveq #11,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a3a: 4e5e unlk %fp <== NOT EXECUTED
47a3c: 4e75 rts <== NOT EXECUTED
47a3e: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !time_buffer )
return RTEMS_INVALID_ADDRESS;
47a42: 7009 moveq #9,%d0 <== NOT EXECUTED
&_Thread_Executing->Timer,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
47a44: 4e5e unlk %fp <== NOT EXECUTED
00058974 <rtems_timer_cancel>:
*/
rtems_status_code rtems_timer_cancel(
rtems_id id
)
{
58974: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58978: 486e fffc pea %fp@(-4) <== NOT EXECUTED
5897c: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58980: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58986: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
5898c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58990: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58994: 6706 beqs 5899c <rtems_timer_cancel+0x28> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58996: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58998: 4e5e unlk %fp <== NOT EXECUTED
5899a: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( !_Timer_Is_dormant_class( the_timer->the_class ) )
5899c: 7204 moveq #4,%d1 <== NOT EXECUTED
5899e: 2040 moveal %d0,%a0 <== NOT EXECUTED
589a0: b2a8 0038 cmpl %a0@(56),%d1 <== NOT EXECUTED
589a4: 670c beqs 589b2 <rtems_timer_cancel+0x3e> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
589a6: 4868 0010 pea %a0@(16) <== NOT EXECUTED
589aa: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
589b0: 588f addql #4,%sp <== NOT EXECUTED
_Thread_Enable_dispatch();
589b2: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
589b8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
589ba: 4e5e unlk %fp <== NOT EXECUTED
...
00046c90 <rtems_timer_create>:
rtems_status_code rtems_timer_create(
rtems_name name,
rtems_id *id
)
{
46c90: 4e56 fff4 linkw %fp,#-12
46c94: 48d7 040c moveml %d2-%d3/%a2,%sp@
46c98: 242e 0008 movel %fp@(8),%d2
46c9c: 246e 000c moveal %fp@(12),%a2
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
46ca0: 6768 beqs 46d0a <rtems_timer_create+0x7a> <== NEVER TAKEN
return RTEMS_INVALID_NAME;
if ( !id )
46ca2: 4a8a tstl %a2
46ca4: 6700 0082 beqw 46d28 <rtems_timer_create+0x98>
46ca8: 2039 0005 e8aa movel 5e8aa <_Thread_Dispatch_disable_level>,%d0
46cae: 5280 addql #1,%d0
46cb0: 23c0 0005 e8aa movel %d0,5e8aa <_Thread_Dispatch_disable_level>
* This function allocates a timer control block from
* the inactive chain of free timer control blocks.
*/
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Allocate( void )
{
return (Timer_Control *) _Objects_Allocate( &_Timer_Information );
46cb6: 4879 0005 eaa0 pea 5eaa0 <_Timer_Information>
46cbc: 4eb9 0004 7c64 jsr 47c64 <_Objects_Allocate>
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
46cc2: 588f addql #4,%sp
46cc4: 2040 moveal %d0,%a0
46cc6: 4a80 tstl %d0
46cc8: 674c beqs 46d16 <rtems_timer_create+0x86> <== NEVER TAKEN
Objects_Name name
)
{
_Objects_Set_local_object(
information,
_Objects_Get_index( the_object->id ),
46cca: 2028 0008 movel %a0@(8),%d0
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cce: 4281 clrl %d1
_Thread_Enable_dispatch();
return RTEMS_TOO_MANY;
}
the_timer->the_class = TIMER_DORMANT;
46cd0: 7604 moveq #4,%d3
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cd2: 2279 0005 eab8 moveal 5eab8 <_Timer_Information+0x18>,%a1
Objects_Information *information,
Objects_Control *the_object,
Objects_Name name
)
{
_Objects_Set_local_object(
46cd8: 3200 movew %d0,%d1
46cda: 2143 0038 movel %d3,%a0@(56)
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46cde: 42a8 0018 clrl %a0@(24)
the_watchdog->routine = routine;
46ce2: 42a8 002c clrl %a0@(44)
the_watchdog->id = id;
46ce6: 42a8 0030 clrl %a0@(48)
the_watchdog->user_data = user_data;
46cea: 42a8 0034 clrl %a0@(52)
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return;
#endif
information->local_table[ index ] = the_object;
46cee: 2388 1c00 movel %a0,%a1@(00000000,%d1:l:4)
information,
_Objects_Get_index( the_object->id ),
the_object
);
the_object->name = name;
46cf2: 2142 000c movel %d2,%a0@(12)
&_Timer_Information,
&the_timer->Object,
(Objects_Name) name
);
*id = the_timer->Object.id;
46cf6: 2480 movel %d0,%a2@
_Thread_Enable_dispatch();
46cf8: 4eb9 0004 8c32 jsr 48c32 <_Thread_Enable_dispatch>
return RTEMS_SUCCESSFUL;
}
46cfe: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
(Objects_Name) name
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
46d04: 4280 clrl %d0
}
46d06: 4e5e unlk %fp
46d08: 4e75 rts
)
{
Timer_Control *the_timer;
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
46d0a: 7003 moveq #3,%d0
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d0c: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2
46d12: 4e5e unlk %fp <== NOT EXECUTED
46d14: 4e75 rts <== NOT EXECUTED
_Thread_Disable_dispatch(); /* to prevent deletion */
the_timer = _Timer_Allocate();
if ( !the_timer ) {
_Thread_Enable_dispatch();
46d16: 4eb9 0004 8c32 jsr 48c32 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_TOO_MANY;
46d1c: 7005 moveq #5,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d1e: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46d24: 4e5e unlk %fp <== NOT EXECUTED
46d26: 4e75 rts <== NOT EXECUTED
if ( !rtems_is_name_valid( name ) )
return RTEMS_INVALID_NAME;
if ( !id )
return RTEMS_INVALID_ADDRESS;
46d28: 7009 moveq #9,%d0 <== NOT EXECUTED
);
*id = the_timer->Object.id;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
}
46d2a: 4cee 040c fff4 moveml %fp@(-12),%d2-%d3/%a2 <== NOT EXECUTED
46d30: 4e5e unlk %fp <== NOT EXECUTED
00058a64 <rtems_timer_delete>:
*/
rtems_status_code rtems_timer_delete(
rtems_id id
)
{
58a64: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
58a68: 2f0a movel %a2,%sp@- <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
58a6a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58a6e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58a72: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58a78: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58a7e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58a82: 2440 moveal %d0,%a2 <== NOT EXECUTED
58a84: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58a88: 663a bnes 58ac4 <rtems_timer_delete+0x60> <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
58a8a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
58a8c: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58a92: 4eb9 0005 b3e0 jsr 5b3e0 <_Objects_Close> <== NOT EXECUTED
(void) _Watchdog_Remove( &the_timer->Ticker );
58a98: 486a 0010 pea %a2@(16) <== NOT EXECUTED
58a9c: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE void _Timer_Free (
Timer_Control *the_timer
)
{
_Objects_Free( &_Timer_Information, &the_timer->Object );
58aa2: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58aa4: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58aaa: 4eb9 0005 b6a4 jsr 5b6a4 <_Objects_Free> <== NOT EXECUTED
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
58ab0: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ab6: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
case OBJECTS_LOCAL:
_Objects_Close( &_Timer_Information, &the_timer->Object );
(void) _Watchdog_Remove( &the_timer->Ticker );
_Timer_Free( the_timer );
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
58aba: 4fef 0014 lea %sp@(20),%sp <== NOT EXECUTED
58abe: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ac0: 4e5e unlk %fp <== NOT EXECUTED
58ac2: 4e75 rts <== NOT EXECUTED
58ac4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58ac8: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58aca: 4e5e unlk %fp <== NOT EXECUTED
...
00046d34 <rtems_timer_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
46d34: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
46d38: 48d7 043c moveml %d2-%d5/%a2,%sp@ <== NOT EXECUTED
46d3c: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
46d40: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
46d44: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
46d48: 4a82 tstl %d2 <== NOT EXECUTED
46d4a: 6700 0094 beqw 46de0 <rtems_timer_fire_after+0xac> <== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
if ( !routine )
46d4e: 4a83 tstl %d3 <== NOT EXECUTED
46d50: 6700 00ae beqw 46e00 <rtems_timer_fire_after+0xcc> <== NOT EXECUTED
Objects_Id id,
Objects_Locations *location
)
{
return (Timer_Control *)
_Objects_Get( &_Timer_Information, id, location );
46d54: 486e fffc pea %fp@(-4) <== NOT EXECUTED
46d58: 2f04 movel %d4,%sp@- <== NOT EXECUTED
46d5a: 4879 0005 eaa0 pea 5eaa0 <_Timer_Information> <== NOT EXECUTED
46d60: 4eb9 0004 8124 jsr 48124 <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
46d66: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
46d6a: 2440 moveal %d0,%a2 <== NOT EXECUTED
46d6c: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
46d70: 6662 bnes 46dd4 <rtems_timer_fire_after+0xa0> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
46d72: 2a00 movel %d0,%d5 <== NOT EXECUTED
46d74: 0685 0000 0010 addil #16,%d5 <== NOT EXECUTED
46d7a: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46d7c: 4eb9 0004 9c64 jsr 49c64 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
46d82: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
46d88: 40c1 movew %sr,%d1 <== NOT EXECUTED
46d8a: 8081 orl %d1,%d0 <== NOT EXECUTED
46d8c: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
46d8e: 588f addql #4,%sp <== NOT EXECUTED
46d90: 4aaa 0018 tstl %a2@(24) <== NOT EXECUTED
46d94: 6656 bnes 46dec <rtems_timer_fire_after+0xb8> <== NOT EXECUTED
/*
* OK. Now we now the timer was not rescheduled by an interrupt
* so we can atomically initialize it as in use.
*/
the_timer->the_class = TIMER_INTERVAL;
46d96: 42aa 0038 clrl %a2@(56) <== NOT EXECUTED
46d9a: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
46da0: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
46da4: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
the_watchdog->id = id;
46da8: 2544 0030 movel %d4,%a2@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_ISR_Enable( level );
46dac: 46c1 movew %d1,%sr <== NOT EXECUTED
Watchdog_Control *the_watchdog,
Watchdog_Interval units
)
{
the_watchdog->initial = units;
46dae: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );
46db2: 2f05 movel %d5,%sp@- <== NOT EXECUTED
46db4: 4879 0005 e98a pea 5e98a <_Watchdog_Ticks_chain> <== NOT EXECUTED
46dba: 4eb9 0004 9b1c jsr 49b1c <_Watchdog_Insert> <== NOT EXECUTED
_Watchdog_Insert_ticks( &the_timer->Ticker, ticks );
_Thread_Enable_dispatch();
46dc0: 4eb9 0004 8c32 jsr 48c32 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46dc6: 508f addql #8,%sp <== NOT EXECUTED
46dc8: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46dca: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46dd0: 4e5e unlk %fp <== NOT EXECUTED
46dd2: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
46dd4: 7004 moveq #4,%d0 <== NOT EXECUTED
}
46dd6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46ddc: 4e5e unlk %fp <== NOT EXECUTED
46dde: 4e75 rts <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
46de0: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46de2: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46de8: 4e5e unlk %fp <== NOT EXECUTED
46dea: 4e75 rts <== NOT EXECUTED
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
46dec: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
46dee: 4eb9 0004 8c32 jsr 48c32 <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
46df4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46df6: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46dfc: 4e5e unlk %fp <== NOT EXECUTED
46dfe: 4e75 rts <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
46e00: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
46e02: 4cee 043c ffe8 moveml %fp@(-24),%d2-%d5/%a2 <== NOT EXECUTED
46e08: 4e5e unlk %fp <== NOT EXECUTED
00058ba8 <rtems_timer_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58ba8: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
58bac: 48d7 041c moveml %d2-%d4/%a2,%sp@ <== NOT EXECUTED
58bb0: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
58bb4: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
if ( !_TOD_Is_set )
58bb8: 4a39 0007 d244 tstb 7d244 <_TOD_Is_set> <== NOT EXECUTED
58bbe: 660c bnes 58bcc <rtems_timer_fire_when+0x24> <== NOT EXECUTED
return RTEMS_NOT_DEFINED;
58bc0: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bc2: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58bc8: 4e5e unlk %fp <== NOT EXECUTED
58bca: 4e75 rts <== NOT EXECUTED
rtems_interval seconds;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !_TOD_Validate( wall_time ) )
58bcc: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58bce: 4eb9 0005 5bf0 jsr 55bf0 <_TOD_Validate> <== NOT EXECUTED
58bd4: 588f addql #4,%sp <== NOT EXECUTED
58bd6: 4a00 tstb %d0 <== NOT EXECUTED
58bd8: 671a beqs 58bf4 <rtems_timer_fire_when+0x4c> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
58bda: 4a83 tstl %d3 <== NOT EXECUTED
58bdc: 6700 00a8 beqw 58c86 <rtems_timer_fire_when+0xde> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58be0: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58be2: 4eb9 0005 5ae8 jsr 55ae8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58be8: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
seconds = _TOD_To_seconds( wall_time );
58bea: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58bec: b0b9 0007 d2de cmpl 7d2de <_TOD_Now>,%d0 <== NOT EXECUTED
58bf2: 620c bhis 58c00 <rtems_timer_fire_when+0x58> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
58bf4: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58bf6: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58bfc: 4e5e unlk %fp <== NOT EXECUTED
58bfe: 4e75 rts <== NOT EXECUTED
58c00: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58c04: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58c08: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58c0e: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58c14: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58c18: 2440 moveal %d0,%a2 <== NOT EXECUTED
58c1a: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58c1e: 665a bnes 58c7a <rtems_timer_fire_when+0xd2> <== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58c20: 2800 movel %d0,%d4 <== NOT EXECUTED
58c22: 0684 0000 0010 addil #16,%d4 <== NOT EXECUTED
58c28: 2f04 movel %d4,%sp@- <== NOT EXECUTED
58c2a: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
58c30: 256e 0014 0034 movel %fp@(20),%a2@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY;
58c36: 7002 moveq #2,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c38: 94b9 0007 d2de subl 7d2de <_TOD_Now>,%d2 <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
the_timer->the_class = TIMER_TIME_OF_DAY;
58c3e: 2540 0038 movel %d0,%a2@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58c42: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
_Watchdog_Insert_seconds(
58c46: 2542 001c movel %d2,%a2@(28) <== NOT EXECUTED
58c4a: 2540 0030 movel %d0,%a2@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58c4e: 42aa 0018 clrl %a2@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58c52: 2543 002c movel %d3,%a2@(44) <== NOT EXECUTED
)
{
the_watchdog->initial = units;
_Watchdog_Insert( &_Watchdog_Seconds_chain, the_watchdog );
58c56: 2f04 movel %d4,%sp@- <== NOT EXECUTED
58c58: 4879 0007 d308 pea 7d308 <_Watchdog_Seconds_chain> <== NOT EXECUTED
58c5e: 4eb9 0005 d56c jsr 5d56c <_Watchdog_Insert> <== NOT EXECUTED
&the_timer->Ticker,
seconds - _TOD_Seconds_since_epoch()
);
_Thread_Enable_dispatch();
58c64: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58c6a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58c6e: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c70: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58c76: 4e5e unlk %fp <== NOT EXECUTED
58c78: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58c7a: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58c7c: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58c82: 4e5e unlk %fp <== NOT EXECUTED
58c84: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58c86: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58c88: 4cee 041c ffec moveml %fp@(-20),%d2-%d4/%a2 <== NOT EXECUTED
58c8e: 4e5e unlk %fp <== NOT EXECUTED
...
00058c94 <rtems_timer_get_information>:
rtems_status_code rtems_timer_get_information(
rtems_id id,
rtems_timer_information *the_info
)
{
58c94: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
58c98: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58c9a: 246e 000c moveal %fp@(12),%a2 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
58c9e: 4a8a tstl %a2 <== NOT EXECUTED
58ca0: 6752 beqs 58cf4 <rtems_timer_get_information+0x60><== NOT EXECUTED
58ca2: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58ca6: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58caa: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58cb0: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58cb6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58cba: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58cbe: 662a bnes 58cea <rtems_timer_get_information+0x56><== NOT EXECUTED
case OBJECTS_LOCAL:
the_info->the_class = the_timer->the_class;
58cc0: 2040 moveal %d0,%a0 <== NOT EXECUTED
58cc2: 24a8 0038 movel %a0@(56),%a2@ <== NOT EXECUTED
the_info->initial = the_timer->Ticker.initial;
58cc6: 41e8 001c lea %a0@(28),%a0 <== NOT EXECUTED
58cca: 2550 0004 movel %a0@,%a2@(4) <== NOT EXECUTED
the_info->start_time = the_timer->Ticker.start_time;
58cce: 5088 addql #8,%a0 <== NOT EXECUTED
58cd0: 2550 0008 movel %a0@,%a2@(8) <== NOT EXECUTED
the_info->stop_time = the_timer->Ticker.stop_time;
58cd4: 5888 addql #4,%a0 <== NOT EXECUTED
58cd6: 2550 000c movel %a0@,%a2@(12) <== NOT EXECUTED
_Thread_Enable_dispatch();
58cda: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ce0: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
the_info->the_class = the_timer->the_class;
the_info->initial = the_timer->Ticker.initial;
the_info->start_time = the_timer->Ticker.start_time;
the_info->stop_time = the_timer->Ticker.stop_time;
_Thread_Enable_dispatch();
return RTEMS_SUCCESSFUL;
58ce4: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ce6: 4e5e unlk %fp <== NOT EXECUTED
58ce8: 4e75 rts <== NOT EXECUTED
58cea: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58cee: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58cf0: 4e5e unlk %fp <== NOT EXECUTED
58cf2: 4e75 rts <== NOT EXECUTED
58cf4: 246e fff8 moveal %fp@(-8),%a2 <== NOT EXECUTED
{
Timer_Control *the_timer;
Objects_Locations location;
if ( !the_info )
return RTEMS_INVALID_ADDRESS;
58cf8: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58cfa: 4e5e unlk %fp <== NOT EXECUTED
...
00058d00 <rtems_timer_ident>:
rtems_status_code rtems_timer_ident(
rtems_name name,
rtems_id *id
)
{
58d00: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
Objects_Name_or_id_lookup_errors status;
status = _Objects_Name_to_id_u32(
58d04: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
58d08: 2f3c 7fff ffff movel #2147483647,%sp@- <== NOT EXECUTED
58d0e: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58d12: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58d18: 4eb9 0005 b9d8 jsr 5b9d8 <_Objects_Name_to_id_u32> <== NOT EXECUTED
name,
OBJECTS_SEARCH_LOCAL_NODE,
id
);
return _Status_Object_name_errors_to_status[ status ];
58d1e: 41f9 0007 6870 lea 76870 <_Status_Object_name_errors_to_status>,%a0<== NOT EXECUTED
}
58d24: 4e5e unlk %fp <== NOT EXECUTED
58d26: 2030 0c00 movel %a0@(00000000,%d0:l:4),%d0 <== NOT EXECUTED
00059416 <rtems_timer_initiate_server>:
rtems_status_code rtems_timer_initiate_server(
uint32_t priority,
uint32_t stack_size,
rtems_attribute attribute_set
)
{
59416: 4e56 fffc linkw %fp,#-4 <== NOT EXECUTED
5941a: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
5941e: 2f03 movel %d3,%sp@- <== NOT EXECUTED
59420: 2f02 movel %d2,%sp@- <== NOT EXECUTED
59422: 4a80 tstl %d0 <== NOT EXECUTED
59424: 6748 beqs 5946e <rtems_timer_initiate_server+0x58><== NOT EXECUTED
( the_priority <= RTEMS_MAXIMUM_PRIORITY ) );
59426: 4281 clrl %d1 <== NOT EXECUTED
59428: 1239 0007 7662 moveb 77662 <rtems_maximum_priority>,%d1 <== NOT EXECUTED
*/
RTEMS_INLINE_ROUTINE bool _RTEMS_tasks_Priority_is_valid (
rtems_task_priority the_priority
)
{
return ( ( the_priority >= RTEMS_MINIMUM_PRIORITY ) &&
5942e: b280 cmpl %d0,%d1 <== NOT EXECUTED
59430: 644a bccs 5947c <rtems_timer_initiate_server+0x66><== NOT EXECUTED
* structured so we check it is invalid before looking for
* a specific invalid value as the default.
*/
_priority = priority;
if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) {
if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY )
59432: 72ff moveq #-1,%d1 <== NOT EXECUTED
59434: b280 cmpl %d0,%d1 <== NOT EXECUTED
59436: 6636 bnes 5946e <rtems_timer_initiate_server+0x58><== NOT EXECUTED
59438: 2239 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
5943e: 5281 addql #1,%d1 <== NOT EXECUTED
return RTEMS_INVALID_PRIORITY;
_priority = 0;
59440: 4283 clrl %d3 <== NOT EXECUTED
59442: 23c1 0007 d234 movel %d1,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
59448: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
5944a: 1439 0007 871e moveb 7871e <initialized.3664>,%d2 <== NOT EXECUTED
initialized = true;
59450: 13c0 0007 871e moveb %d0,7871e <initialized.3664> <== NOT EXECUTED
_Thread_Enable_dispatch();
59456: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
5945c: 4a02 tstb %d2 <== NOT EXECUTED
5945e: 6744 beqs 594a4 <rtems_timer_initiate_server+0x8e><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59460: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
tmpInitialized = initialized;
initialized = true;
_Thread_Enable_dispatch();
if ( tmpInitialized )
return RTEMS_INCORRECT_STATE;
59464: 700e moveq #14,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59466: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
5946a: 4e5e unlk %fp <== NOT EXECUTED
5946c: 4e75 rts <== NOT EXECUTED
5946e: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
* a specific invalid value as the default.
*/
_priority = priority;
if ( !_RTEMS_tasks_Priority_is_valid( priority ) ) {
if ( priority != RTEMS_TIMER_SERVER_DEFAULT_PRIORITY )
return RTEMS_INVALID_PRIORITY;
59472: 7013 moveq #19,%d0 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
59474: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
59478: 4e5e unlk %fp <== NOT EXECUTED
5947a: 4e75 rts <== NOT EXECUTED
5947c: 2239 0007 d234 movel 7d234 <_Thread_Dispatch_disable_level>,%d1<== NOT EXECUTED
59482: 5281 addql #1,%d1 <== NOT EXECUTED
59484: 2600 movel %d0,%d3 <== NOT EXECUTED
59486: 23c1 0007 d234 movel %d1,7d234 <_Thread_Dispatch_disable_level><== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
initialized = true;
5948c: 7001 moveq #1,%d0 <== NOT EXECUTED
/*
* Just to make sure this is only called once.
*/
_Thread_Disable_dispatch();
tmpInitialized = initialized;
5948e: 1439 0007 871e moveb 7871e <initialized.3664>,%d2 <== NOT EXECUTED
initialized = true;
59494: 13c0 0007 871e moveb %d0,7871e <initialized.3664> <== NOT EXECUTED
_Thread_Enable_dispatch();
5949a: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
if ( tmpInitialized )
594a0: 4a02 tstb %d2 <== NOT EXECUTED
594a2: 66bc bnes 59460 <rtems_timer_initiate_server+0x4a><== NOT EXECUTED
* other library rules. For example, if using a TSR written in Ada the
* Server should run at the same priority as the priority Ada task.
* Otherwise, the priority ceiling for the mutex used to protect the
* GNAT run-time is violated.
*/
status = rtems_task_create(
594a4: 222e 0010 movel %fp@(16),%d1 <== NOT EXECUTED
594a8: 486e fffc pea %fp@(-4) <== NOT EXECUTED
594ac: 08c1 000f bset #15,%d1 <== NOT EXECUTED
594b0: 2f01 movel %d1,%sp@- <== NOT EXECUTED
594b2: 4878 0100 pea 100 <DBL_MANT_DIG+0xcb> <== NOT EXECUTED
594b6: 2f2e 000c movel %fp@(12),%sp@- <== NOT EXECUTED
594ba: 2f03 movel %d3,%sp@- <== NOT EXECUTED
594bc: 2f3c 5449 4d45 movel #1414090053,%sp@- <== NOT EXECUTED
594c2: 4eb9 0005 8048 jsr 58048 <rtems_task_create> <== NOT EXECUTED
/* user may want floating point but we need */
/* system task specified for 0 priority */
attribute_set | RTEMS_SYSTEM_TASK,
&id /* get the id back */
);
if (status) {
594c8: 4fef 0018 lea %sp@(24),%sp <== NOT EXECUTED
594cc: 4a80 tstl %d0 <== NOT EXECUTED
594ce: 6714 beqs 594e4 <rtems_timer_initiate_server+0xce><== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594d0: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
/* system task specified for 0 priority */
attribute_set | RTEMS_SYSTEM_TASK,
&id /* get the id back */
);
if (status) {
initialized = false;
594d4: 4201 clrb %d1 <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594d6: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
594da: 4e5e unlk %fp <== NOT EXECUTED
/* system task specified for 0 priority */
attribute_set | RTEMS_SYSTEM_TASK,
&id /* get the id back */
);
if (status) {
initialized = false;
594dc: 13c1 0007 871e moveb %d1,7871e <initialized.3664> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
594e2: 4e75 rts <== NOT EXECUTED
* We work with the TCB pointer, not the ID, so we need to convert
* to a TCB pointer from here out.
*/
ts->thread = (Thread_Control *)_Objects_Get_local_object(
&_RTEMS_tasks_Information,
_Objects_Get_index(id)
594e4: 202e fffc movel %fp@(-4),%d0 <== NOT EXECUTED
*/
#if defined(RTEMS_DEBUG)
if ( index > information->maximum )
return NULL;
#endif
return information->local_table[ index ];
594e8: 4282 clrl %d2 <== NOT EXECUTED
/*
* We work with the TCB pointer, not the ID, so we need to convert
* to a TCB pointer from here out.
*/
ts->thread = (Thread_Control *)_Objects_Get_local_object(
594ea: 2079 0007 d1cc moveal 7d1cc <_RTEMS_tasks_Information+0x18>,%a0<== NOT EXECUTED
594f0: 3400 movew %d0,%d2 <== NOT EXECUTED
* Initialize the pointer to the timer schedule method so applications that
* do not use the Timer Server do not have to pull it in.
*/
ts->schedule_operation = _Timer_server_Schedule_operation_method;
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
594f2: 2239 0007 d35c movel 7d35c <_Watchdog_Ticks_since_boot>,%d1<== NOT EXECUTED
/*
* We work with the TCB pointer, not the ID, so we need to convert
* to a TCB pointer from here out.
*/
ts->thread = (Thread_Control *)_Objects_Get_local_object(
594f8: 41f0 2c00 lea %a0@(00000000,%d2:l:4),%a0 <== NOT EXECUTED
594fc: 23d0 0007 86a0 movel %a0@,786a0 <_Timer_server_Default> <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59502: 41f9 0007 86d4 lea 786d4 <_Timer_server_Default+0x34>,%a0 <== NOT EXECUTED
_Timer_server = ts;
/*
* Start the timer server
*/
status = rtems_task_start(
59508: 4879 0007 86a0 pea 786a0 <_Timer_server_Default> <== NOT EXECUTED
5950e: 487a fb80 pea %pc@(59090 <_Timer_server_Body>) <== NOT EXECUTED
59512: 23c8 0007 86d0 movel %a0,786d0 <_Timer_server_Default+0x30><== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59518: 41f9 0007 86d0 lea 786d0 <_Timer_server_Default+0x30>,%a0 <== NOT EXECUTED
5951e: 23c8 0007 86d8 movel %a0,786d8 <_Timer_server_Default+0x38><== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59524: 41f9 0007 870c lea 7870c <_Timer_server_Default+0x6c>,%a0 <== NOT EXECUTED
* Initialize the pointer to the timer schedule method so applications that
* do not use the Timer Server do not have to pull it in.
*/
ts->schedule_operation = _Timer_server_Schedule_operation_method;
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
5952a: 23c1 0007 86dc movel %d1,786dc <_Timer_server_Default+0x3c><== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59530: 223c 0007 8708 movel #493320,%d1 <== NOT EXECUTED
)
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
59536: 23c8 0007 8708 movel %a0,78708 <_Timer_server_Default+0x68><== NOT EXECUTED
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
5953c: 41f9 0007 d2de lea 7d2de <_TOD_Now>,%a0 <== NOT EXECUTED
head->previous = NULL;
tail->previous = head;
59542: 23c1 0007 8710 movel %d1,78710 <_Timer_server_Default+0x70><== NOT EXECUTED
59548: 23d0 0007 8714 movel %a0@,78714 <_Timer_server_Default+0x74><== NOT EXECUTED
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
5954e: 223c 0005 c234 movel #377396,%d1 <== NOT EXECUTED
59554: 41f9 0005 c234 lea 5c234 <_Thread_Delay_ended>,%a0 <== NOT EXECUTED
5955a: 23c1 0007 86c4 movel %d1,786c4 <_Timer_server_Default+0x24><== NOT EXECUTED
ts->insert_chain = NULL;
ts->active = false;
59560: 4201 clrb %d1 <== NOT EXECUTED
ts->schedule_operation = _Timer_server_Schedule_operation_method;
ts->Interval_watchdogs.last_snapshot = _Watchdog_Ticks_since_boot;
ts->TOD_watchdogs.last_snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
ts->insert_chain = NULL;
59562: 42b9 0007 8718 clrl 78718 <_Timer_server_Default+0x78> <== NOT EXECUTED
ts->active = false;
59568: 13c1 0007 871c moveb %d1,7871c <_Timer_server_Default+0x7c><== NOT EXECUTED
5956e: 23c8 0007 86fc movel %a0,786fc <_Timer_server_Default+0x5c><== NOT EXECUTED
/*
* The default timer server is now available.
*/
_Timer_server = ts;
59574: 41f9 0007 86a0 lea 786a0 <_Timer_server_Default>,%a0 <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
5957a: 2f00 movel %d0,%sp@- <== NOT EXECUTED
/*
* Initialize the pointer to the timer schedule method so applications that
* do not use the Timer Server do not have to pull it in.
*/
ts->schedule_operation = _Timer_server_Schedule_operation_method;
5957c: 223c 0005 92ba movel #365242,%d1 <== NOT EXECUTED
{
Chain_Node *head = _Chain_Head( the_chain );
Chain_Node *tail = _Chain_Tail( the_chain );
head->next = tail;
head->previous = NULL;
59582: 42b9 0007 86d4 clrl 786d4 <_Timer_server_Default+0x34> <== NOT EXECUTED
59588: 42b9 0007 870c clrl 7870c <_Timer_server_Default+0x6c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
5958e: 42b9 0007 86b0 clrl 786b0 <_Timer_server_Default+0x10> <== NOT EXECUTED
59594: 23c1 0007 86a4 movel %d1,786a4 <_Timer_server_Default+0x4> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
5959a: 23c0 0007 86c8 movel %d0,786c8 <_Timer_server_Default+0x28><== NOT EXECUTED
ts->active = false;
/*
* The default timer server is now available.
*/
_Timer_server = ts;
595a0: 23c8 0007 d4a4 movel %a0,7d4a4 <_Timer_server> <== NOT EXECUTED
the_watchdog->user_data = user_data;
595a6: 42b9 0007 86cc clrl 786cc <_Timer_server_Default+0x2c> <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
595ac: 42b9 0007 86e8 clrl 786e8 <_Timer_server_Default+0x48> <== NOT EXECUTED
the_watchdog->routine = routine;
the_watchdog->id = id;
595b2: 23c0 0007 8700 movel %d0,78700 <_Timer_server_Default+0x60><== NOT EXECUTED
the_watchdog->user_data = user_data;
595b8: 42b9 0007 8704 clrl 78704 <_Timer_server_Default+0x64> <== NOT EXECUTED
/*
* Start the timer server
*/
status = rtems_task_start(
595be: 4eb9 0005 8754 jsr 58754 <rtems_task_start> <== NOT EXECUTED
initialized = false;
}
#endif
return status;
}
595c4: 242e fff4 movel %fp@(-12),%d2 <== NOT EXECUTED
if (status) {
initialized = false;
}
#endif
return status;
595c8: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
}
595cc: 262e fff8 movel %fp@(-8),%d3 <== NOT EXECUTED
595d0: 4e5e unlk %fp <== NOT EXECUTED
00058d2c <rtems_timer_reset>:
*/
rtems_status_code rtems_timer_reset(
rtems_id id
)
{
58d2c: 4e56 fff0 linkw %fp,#-16 <== NOT EXECUTED
58d30: 48d7 0c04 moveml %d2/%a2-%a3,%sp@ <== NOT EXECUTED
58d34: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58d38: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58d3c: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58d42: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58d48: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58d4c: 2440 moveal %d0,%a2 <== NOT EXECUTED
58d4e: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58d52: 670e beqs 58d62 <rtems_timer_reset+0x36> <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58d54: 7404 moveq #4,%d2 <== NOT EXECUTED
}
58d56: 2002 movel %d2,%d0 <== NOT EXECUTED
58d58: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
58d5e: 4e5e unlk %fp <== NOT EXECUTED
58d60: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
58d62: 202a 0038 movel %a2@(56),%d0 <== NOT EXECUTED
58d66: 671a beqs 58d82 <rtems_timer_reset+0x56> <== NOT EXECUTED
_Watchdog_Remove( &the_timer->Ticker );
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
} else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
58d68: 7201 moveq #1,%d1 <== NOT EXECUTED
58d6a: b280 cmpl %d0,%d1 <== NOT EXECUTED
58d6c: 673c beqs 58daa <rtems_timer_reset+0x7e> <== NOT EXECUTED
/*
* Must be dormant or time of day timer (e.g. TIMER_DORMANT,
* TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We
* can only reset active interval timers.
*/
status = RTEMS_NOT_DEFINED;
58d6e: 740b moveq #11,%d2 <== NOT EXECUTED
}
_Thread_Enable_dispatch();
58d70: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58d76: 2002 movel %d2,%d0 <== NOT EXECUTED
58d78: 4cee 0c04 fff0 moveml %fp@(-16),%d2/%a2-%a3 <== NOT EXECUTED
58d7e: 4e5e unlk %fp <== NOT EXECUTED
58d80: 4e75 rts <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
58d82: 45ea 0010 lea %a2@(16),%a2 <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58d86: 4282 clrl %d2 <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
58d88: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58d8a: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
58d90: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58d92: 4879 0007 d314 pea 7d314 <_Watchdog_Ticks_chain> <== NOT EXECUTED
58d98: 4eb9 0005 d56c jsr 5d56c <_Watchdog_Insert> <== NOT EXECUTED
58d9e: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We
* can only reset active interval timers.
*/
status = RTEMS_NOT_DEFINED;
}
_Thread_Enable_dispatch();
58da2: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
58da8: 60cc bras 58d76 <rtems_timer_reset+0x4a> <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58daa: 486a 0010 pea %a2@(16) <== NOT EXECUTED
rtems_id id
)
{
Timer_Control *the_timer;
Objects_Locations location;
rtems_status_code status = RTEMS_SUCCESSFUL;
58dae: 4282 clrl %d2 <== NOT EXECUTED
case OBJECTS_LOCAL:
if ( the_timer->the_class == TIMER_INTERVAL ) {
_Watchdog_Remove( &the_timer->Ticker );
_Watchdog_Insert( &_Watchdog_Ticks_chain, &the_timer->Ticker );
} else if ( the_timer->the_class == TIMER_INTERVAL_ON_TASK ) {
Timer_server_Control *timer_server = _Timer_server;
58db0: 2679 0007 d4a4 moveal 7d4a4 <_Timer_server>,%a3 <== NOT EXECUTED
if ( !timer_server ) {
_Thread_Enable_dispatch();
return RTEMS_INCORRECT_STATE;
}
#endif
_Watchdog_Remove( &the_timer->Ticker );
58db6: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58dbc: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58dbe: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58dc0: 206b 0004 moveal %a3@(4),%a0 <== NOT EXECUTED
58dc4: 4e90 jsr %a0@ <== NOT EXECUTED
58dc6: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
* TIMER_TIME_OF_DAY, or TIMER_TIME_OF_DAY_ON_TASK). We
* can only reset active interval timers.
*/
status = RTEMS_NOT_DEFINED;
}
_Thread_Enable_dispatch();
58dca: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
58dd0: 60a4 bras 58d76 <rtems_timer_reset+0x4a> <== NOT EXECUTED
...
00058dd4 <rtems_timer_server_fire_after>:
rtems_id id,
rtems_interval ticks,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58dd4: 4e56 ffe8 linkw %fp,#-24 <== NOT EXECUTED
58dd8: 48d7 0c1c moveml %d2-%d4/%a2-%a3,%sp@ <== NOT EXECUTED
58ddc: 282e 0008 movel %fp@(8),%d4 <== NOT EXECUTED
58de0: 262e 000c movel %fp@(12),%d3 <== NOT EXECUTED
58de4: 242e 0010 movel %fp@(16),%d2 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
58de8: 2479 0007 d4a4 moveal 7d4a4 <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58dee: 4a8a tstl %a2 <== NOT EXECUTED
58df0: 6700 009c beqw 58e8e <rtems_timer_server_fire_after+0xba><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !routine )
58df4: 4a82 tstl %d2 <== NOT EXECUTED
58df6: 6700 00a2 beqw 58e9a <rtems_timer_server_fire_after+0xc6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( ticks == 0 )
58dfa: 4a83 tstl %d3 <== NOT EXECUTED
58dfc: 660c bnes 58e0a <rtems_timer_server_fire_after+0x36><== NOT EXECUTED
return RTEMS_INVALID_NUMBER;
58dfe: 700a moveq #10,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e00: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e06: 4e5e unlk %fp <== NOT EXECUTED
58e08: 4e75 rts <== NOT EXECUTED
58e0a: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58e0e: 2f04 movel %d4,%sp@- <== NOT EXECUTED
58e10: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58e16: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
if ( ticks == 0 )
return RTEMS_INVALID_NUMBER;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58e1c: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58e20: 2640 moveal %d0,%a3 <== NOT EXECUTED
58e22: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58e26: 665a bnes 58e82 <rtems_timer_server_fire_after+0xae><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58e28: 486b 0010 pea %a3@(16) <== NOT EXECUTED
58e2c: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
_ISR_Disable( level );
58e32: 203c 0000 0700 movel #1792,%d0 <== NOT EXECUTED
58e38: 40c1 movew %sr,%d1 <== NOT EXECUTED
58e3a: 8081 orl %d1,%d0 <== NOT EXECUTED
58e3c: 46c0 movew %d0,%sr <== NOT EXECUTED
/*
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
58e3e: 588f addql #4,%sp <== NOT EXECUTED
58e40: 4aab 0018 tstl %a3@(24) <== NOT EXECUTED
58e44: 6660 bnes 58ea6 <rtems_timer_server_fire_after+0xd2><== NOT EXECUTED
/*
* OK. Now we now the timer was not rescheduled by an interrupt
* so we can atomically initialize it as in use.
*/
the_timer->the_class = TIMER_INTERVAL_ON_TASK;
58e46: 7001 moveq #1,%d0 <== NOT EXECUTED
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
the_watchdog->user_data = user_data;
58e48: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED
58e4e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58e52: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58e56: 2742 002c movel %d2,%a3@(44) <== NOT EXECUTED
the_watchdog->id = id;
58e5a: 2744 0030 movel %d4,%a3@(48) <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = ticks;
58e5e: 2743 001c movel %d3,%a3@(28) <== NOT EXECUTED
_ISR_Enable( level );
58e62: 46c1 movew %d1,%sr <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58e64: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58e66: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58e68: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
58e6c: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58e6e: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58e74: 508f addql #8,%sp <== NOT EXECUTED
58e76: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e78: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e7e: 4e5e unlk %fp <== NOT EXECUTED
58e80: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58e82: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58e84: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e8a: 4e5e unlk %fp <== NOT EXECUTED
58e8c: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
ISR_Level level;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58e8e: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e90: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58e96: 4e5e unlk %fp <== NOT EXECUTED
58e98: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58e9a: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58e9c: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58ea2: 4e5e unlk %fp <== NOT EXECUTED
58ea4: 4e75 rts <== NOT EXECUTED
* Check to see if the watchdog has just been inserted by a
* higher priority interrupt. If so, abandon this insert.
*/
if ( the_timer->Ticker.state != WATCHDOG_INACTIVE ) {
_ISR_Enable( level );
58ea6: 46c1 movew %d1,%sr <== NOT EXECUTED
_Thread_Enable_dispatch();
58ea8: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58eae: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58eb0: 4cee 0c1c ffe8 moveml %fp@(-24),%d2-%d4/%a2-%a3 <== NOT EXECUTED
58eb6: 4e5e unlk %fp <== NOT EXECUTED
...
00058ebc <rtems_timer_server_fire_when>:
rtems_id id,
rtems_time_of_day *wall_time,
rtems_timer_service_routine_entry routine,
void *user_data
)
{
58ebc: 4e56 ffec linkw %fp,#-20 <== NOT EXECUTED
58ec0: 48d7 0c0c moveml %d2-%d3/%a2-%a3,%sp@ <== NOT EXECUTED
58ec4: 242e 000c movel %fp@(12),%d2 <== NOT EXECUTED
58ec8: 262e 0010 movel %fp@(16),%d3 <== NOT EXECUTED
Timer_Control *the_timer;
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
58ecc: 2479 0007 d4a4 moveal 7d4a4 <_Timer_server>,%a2 <== NOT EXECUTED
if ( !timer_server )
58ed2: 4a8a tstl %a2 <== NOT EXECUTED
58ed4: 6700 00c8 beqw 58f9e <rtems_timer_server_fire_when+0xe2><== NOT EXECUTED
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
58ed8: 4a39 0007 d244 tstb 7d244 <_TOD_Is_set> <== NOT EXECUTED
58ede: 6700 00a6 beqw 58f86 <rtems_timer_server_fire_when+0xca><== NOT EXECUTED
return RTEMS_NOT_DEFINED;
if ( !routine )
58ee2: 4a83 tstl %d3 <== NOT EXECUTED
58ee4: 6700 00ac beqw 58f92 <rtems_timer_server_fire_when+0xd6><== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
58ee8: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58eea: 4eb9 0005 5bf0 jsr 55bf0 <_TOD_Validate> <== NOT EXECUTED
58ef0: 588f addql #4,%sp <== NOT EXECUTED
58ef2: 4a00 tstb %d0 <== NOT EXECUTED
58ef4: 660c bnes 58f02 <rtems_timer_server_fire_when+0x46><== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
if ( seconds <= _TOD_Seconds_since_epoch() )
return RTEMS_INVALID_CLOCK;
58ef6: 7014 moveq #20,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58ef8: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58efe: 4e5e unlk %fp <== NOT EXECUTED
58f00: 4e75 rts <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
58f02: 2f02 movel %d2,%sp@- <== NOT EXECUTED
58f04: 4eb9 0005 5ae8 jsr 55ae8 <_TOD_To_seconds> <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58f0a: 588f addql #4,%sp <== NOT EXECUTED
return RTEMS_INVALID_ADDRESS;
if ( !_TOD_Validate( wall_time ) )
return RTEMS_INVALID_CLOCK;
seconds = _TOD_To_seconds( wall_time );
58f0c: 2400 movel %d0,%d2 <== NOT EXECUTED
if ( seconds <= _TOD_Seconds_since_epoch() )
58f0e: b0b9 0007 d2de cmpl 7d2de <_TOD_Now>,%d0 <== NOT EXECUTED
58f14: 63e0 blss 58ef6 <rtems_timer_server_fire_when+0x3a><== NOT EXECUTED
58f16: 486e fffc pea %fp@(-4) <== NOT EXECUTED
58f1a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
58f1e: 4879 0007 d46c pea 7d46c <_Timer_Information> <== NOT EXECUTED
58f24: 4eb9 0005 b84c jsr 5b84c <_Objects_Get> <== NOT EXECUTED
return RTEMS_INVALID_CLOCK;
the_timer = _Timer_Get( id, &location );
switch ( location ) {
58f2a: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58f2e: 2640 moveal %d0,%a3 <== NOT EXECUTED
58f30: 4aae fffc tstl %fp@(-4) <== NOT EXECUTED
58f34: 6674 bnes 58faa <rtems_timer_server_fire_when+0xee><== NOT EXECUTED
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
58f36: 486b 0010 pea %a3@(16) <== NOT EXECUTED
58f3a: 4eb9 0005 d6b4 jsr 5d6b4 <_Watchdog_Remove> <== NOT EXECUTED
the_watchdog->user_data = user_data;
58f40: 276e 0014 0034 movel %fp@(20),%a3@(52) <== NOT EXECUTED
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
58f46: 7003 moveq #3,%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
58f48: 94b9 0007 d2de subl 7d2de <_TOD_Now>,%d2 <== NOT EXECUTED
the_timer = _Timer_Get( id, &location );
switch ( location ) {
case OBJECTS_LOCAL:
(void) _Watchdog_Remove( &the_timer->Ticker );
the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;
58f4e: 2740 0038 movel %d0,%a3@(56) <== NOT EXECUTED
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
the_watchdog->routine = routine;
the_watchdog->id = id;
58f52: 202e 0008 movel %fp@(8),%d0 <== NOT EXECUTED
_Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
58f56: 2742 001c movel %d2,%a3@(28) <== NOT EXECUTED
58f5a: 2740 0030 movel %d0,%a3@(48) <== NOT EXECUTED
Watchdog_Service_routine_entry routine,
Objects_Id id,
void *user_data
)
{
the_watchdog->state = WATCHDOG_INACTIVE;
58f5e: 42ab 0018 clrl %a3@(24) <== NOT EXECUTED
the_watchdog->routine = routine;
58f62: 2743 002c movel %d3,%a3@(44) <== NOT EXECUTED
(*timer_server->schedule_operation)( timer_server, the_timer );
58f66: 2f0b movel %a3,%sp@- <== NOT EXECUTED
58f68: 2f0a movel %a2,%sp@- <== NOT EXECUTED
58f6a: 206a 0004 moveal %a2@(4),%a0 <== NOT EXECUTED
58f6e: 4e90 jsr %a0@ <== NOT EXECUTED
_Thread_Enable_dispatch();
58f70: 4eb9 0005 c3da jsr 5c3da <_Thread_Enable_dispatch> <== NOT EXECUTED
return RTEMS_SUCCESSFUL;
58f76: 4fef 000c lea %sp@(12),%sp <== NOT EXECUTED
58f7a: 4280 clrl %d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f7c: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f82: 4e5e unlk %fp <== NOT EXECUTED
58f84: 4e75 rts <== NOT EXECUTED
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
58f86: 700b moveq #11,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f88: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f8e: 4e5e unlk %fp <== NOT EXECUTED
58f90: 4e75 rts <== NOT EXECUTED
if ( !_TOD_Is_set )
return RTEMS_NOT_DEFINED;
if ( !routine )
return RTEMS_INVALID_ADDRESS;
58f92: 7009 moveq #9,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58f94: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58f9a: 4e5e unlk %fp <== NOT EXECUTED
58f9c: 4e75 rts <== NOT EXECUTED
Objects_Locations location;
rtems_interval seconds;
Timer_server_Control *timer_server = _Timer_server;
if ( !timer_server )
return RTEMS_INCORRECT_STATE;
58f9e: 700e moveq #14,%d0 <== NOT EXECUTED
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
}
58fa0: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58fa6: 4e5e unlk %fp <== NOT EXECUTED
58fa8: 4e75 rts <== NOT EXECUTED
#endif
case OBJECTS_ERROR:
break;
}
return RTEMS_INVALID_ID;
58faa: 7004 moveq #4,%d0 <== NOT EXECUTED
}
58fac: 4cee 0c0c ffec moveml %fp@(-20),%d2-%d3/%a2-%a3 <== NOT EXECUTED
58fb2: 4e5e unlk %fp <== NOT EXECUTED
...
000470f0 <rtems_workspace_allocate>:
*/
bool rtems_workspace_allocate(
uintptr_t bytes,
void **pointer
)
{
470f0: 4e56 0000 linkw %fp,#0
470f4: 202e 0008 movel %fp@(8),%d0
470f8: 2f0a movel %a2,%sp@-
470fa: 246e 000c moveal %fp@(12),%a2
void *ptr;
/*
* check the arguments
*/
if ( !pointer )
470fe: 4a8a tstl %a2
47100: 6704 beqs 47106 <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
if ( !bytes )
47102: 4a80 tstl %d0
47104: 660a bnes 47110 <rtems_workspace_allocate+0x20> <== ALWAYS TAKEN
if (!ptr)
return false;
*pointer = ptr;
return true;
}
47106: 246e fffc moveal %fp@(-4),%a2
4710a: 4e5e unlk %fp <== NOT EXECUTED
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
4710c: 4200 clrb %d0 <== NOT EXECUTED
*pointer = ptr;
return true;
}
4710e: 4e75 rts <== NOT EXECUTED
RTEMS_INLINE_ROUTINE void *_Protected_heap_Allocate(
Heap_Control *heap,
uintptr_t size
)
{
return _Protected_heap_Allocate_aligned_with_boundary( heap, size, 0, 0 );
47110: 42a7 clrl %sp@-
47112: 42a7 clrl %sp@-
47114: 2f00 movel %d0,%sp@-
47116: 4879 0005 eff6 pea 5eff6 <_Workspace_Area>
4711c: 4eb9 0004 87d0 jsr 487d0 <_Protected_heap_Allocate_aligned_with_boundary>
/*
* Allocate the memory
*/
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
47122: 4fef 0010 lea %sp@(16),%sp
47126: 4a80 tstl %d0
47128: 67dc beqs 47106 <rtems_workspace_allocate+0x16> <== NEVER TAKEN
return false;
*pointer = ptr;
4712a: 2480 movel %d0,%a2@
return true;
}
4712c: 246e fffc moveal %fp@(-4),%a2
47130: 4e5e unlk %fp
ptr = _Protected_heap_Allocate( &_Workspace_Area, (intptr_t) bytes );
if (!ptr)
return false;
*pointer = ptr;
return true;
47132: 7001 moveq #1,%d0 <== NOT EXECUTED
}
00047136 <rtems_workspace_free>:
* _Workspace_Allocate
*/
bool rtems_workspace_free(
void *pointer
)
{
47136: 4e56 0000 linkw %fp,#0 <== NOT EXECUTED
return _Protected_heap_Free( &_Workspace_Area, pointer );
4713a: 2f2e 0008 movel %fp@(8),%sp@- <== NOT EXECUTED
4713e: 4879 0005 eff6 pea 5eff6 <_Workspace_Area> <== NOT EXECUTED
47144: 4eb9 0004 8810 jsr 48810 <_Protected_heap_Free> <== NOT EXECUTED
}
4714a: 4e5e unlk %fp <== NOT EXECUTED
...
000470cc <rtems_workspace_get_information>:
#include <string.h> /* for memset */
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
470cc: 4e56 0000 linkw %fp,#0
470d0: 202e 0008 movel %fp@(8),%d0
if ( !the_info )
470d4: 6714 beqs 470ea <rtems_workspace_get_information+0x1e><== NEVER TAKEN
return false;
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
470d6: 2f00 movel %d0,%sp@-
470d8: 4879 0005 eff6 pea 5eff6 <_Workspace_Area>
470de: 4eb9 0004 8848 jsr 48848 <_Protected_heap_Get_information>
470e4: 508f addql #8,%sp
}
470e6: 4e5e unlk %fp
470e8: 4e75 rts
470ea: 4e5e unlk %fp <== NOT EXECUTED
bool rtems_workspace_get_information(
Heap_Information_block *the_info
)
{
if ( !the_info )
return false;
470ec: 4200 clrb %d0 <== NOT EXECUTED
return _Protected_heap_Get_information( &_Workspace_Area, the_info );
}