RTEMS 4.11
Annotated Report
Mon Sep 12 17:24:42 2011

0004af20 <TOD_MICROSECONDS_TO_TICKS>:                                 
   *  We should ensure the ticks not be truncated by integer division.  We
   *  need to have it be greater than or equal to the requested time.  It
   *  should not be shorter.                                          
   */                                                                 
  microseconds_per_tick = rtems_configuration_get_microseconds_per_tick();
  ticks                 = microseconds / microseconds_per_tick;       
   4af20:	41f9 0006 0b18 	lea 60b18 <Configuration+0xc>,%a0           
#include <rtems/score/tod.h>                                          
                                                                      
uint32_t TOD_MICROSECONDS_TO_TICKS(                                   
  uint32_t microseconds                                               
)                                                                     
{                                                                     
   4af26:	4e56 0000      	linkw %fp,#0                                
   *  We should ensure the ticks not be truncated by integer division.  We
   *  need to have it be greater than or equal to the requested time.  It
   *  should not be shorter.                                          
   */                                                                 
  microseconds_per_tick = rtems_configuration_get_microseconds_per_tick();
  ticks                 = microseconds / microseconds_per_tick;       
   4af2a:	202e 0008      	movel %fp@(8),%d0                           
   4af2e:	4c50 0001      	remul %a0@,%d1,%d0                          
   4af32:	4c50 0000      	remul %a0@,%d0,%d0                          
  if ( (microseconds % microseconds_per_tick) != 0 )                  
   4af36:	4a81           	tstl %d1                                    
   4af38:	6702           	beqs 4af3c <TOD_MICROSECONDS_TO_TICKS+0x1c> <== ALWAYS TAKEN
    ticks += 1;                                                       
   4af3a:	5280           	addql #1,%d0                                <== NOT EXECUTED
                                                                      
  return ticks;                                                       
}                                                                     
   4af3c:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00046db0 <TOD_MILLISECONDS_TO_TICKS>: #include <rtems/score/tod.h> uint32_t TOD_MILLISECONDS_TO_TICKS( uint32_t milliseconds ) {
   46db0:	4e56 0000      	linkw %fp,#0                                
  /**                                                                 
   *  We should ensure the ticks not be truncated by integer division.  We
   *  need to have it be greater than or equal to the requested time.  It
   *  should not be shorter.                                          
   */                                                                 
  milliseconds_per_tick = rtems_configuration_get_milliseconds_per_tick();
   46db4:	2039 0005 cde8 	movel 5cde8 <Configuration+0xc>,%d0         
#include <rtems/score/tod.h>                                          
                                                                      
uint32_t TOD_MILLISECONDS_TO_TICKS(                                   
  uint32_t milliseconds                                               
)                                                                     
{                                                                     
   46dba:	2f02           	movel %d2,%sp@-                             
  /**                                                                 
   *  We should ensure the ticks not be truncated by integer division.  We
   *  need to have it be greater than or equal to the requested time.  It
   *  should not be shorter.                                          
   */                                                                 
  milliseconds_per_tick = rtems_configuration_get_milliseconds_per_tick();
   46dbc:	243c 0000 03e8 	movel #1000,%d2                             
   46dc2:	4c42 0000      	remul %d2,%d0,%d0                           
  ticks                 = milliseconds / milliseconds_per_tick;       
   46dc6:	242e 0008      	movel %fp@(8),%d2                           
   46dca:	4c40 2001      	remul %d0,%d1,%d2                           
   46dce:	4c40 2002      	remul %d0,%d2,%d2                           
   46dd2:	2002           	movel %d2,%d0                               
  if ( (milliseconds % milliseconds_per_tick) != 0 )                  
   46dd4:	4a81           	tstl %d1                                    
   46dd6:	6702           	beqs 46dda <TOD_MILLISECONDS_TO_TICKS+0x2a> <== ALWAYS TAKEN
    ticks += 1;                                                       
   46dd8:	5280           	addql #1,%d0                                <== NOT EXECUTED
                                                                      
  return ticks;                                                       
}                                                                     
   46dda:	241f           	movel %sp@+,%d2                             
   46ddc:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

0004cd80 <_CORE_barrier_Wait>: Thread_Control *executing; ISR_Level level; executing = _Thread_Executing; executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL; _ISR_Disable( level );
   4cd80:	203c 0000 0700 	movel #1792,%d0                             
  Objects_Id                           id,                            
  bool                                 wait,                          
  Watchdog_Interval                    timeout,                       
  CORE_barrier_API_mp_support_callout  api_barrier_mp_support         
)                                                                     
{                                                                     
   4cd86:	4e56 fff4      	linkw %fp,#-12                              
  Thread_Control *executing;                                          
  ISR_Level       level;                                              
                                                                      
  executing = _Thread_Executing;                                      
   4cd8a:	2279 0005 fa10 	moveal 5fa10 <_Per_CPU_Information+0xc>,%a1 
  Objects_Id                           id,                            
  bool                                 wait,                          
  Watchdog_Interval                    timeout,                       
  CORE_barrier_API_mp_support_callout  api_barrier_mp_support         
)                                                                     
{                                                                     
   4cd90:	48d7 001c      	moveml %d2-%d4,%sp@                         
   4cd94:	206e 0008      	moveal %fp@(8),%a0                          
  Thread_Control *executing;                                          
  ISR_Level       level;                                              
                                                                      
  executing = _Thread_Executing;                                      
  executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;       
   4cd98:	42a9 0034      	clrl %a1@(52)                               
  Objects_Id                           id,                            
  bool                                 wait,                          
  Watchdog_Interval                    timeout,                       
  CORE_barrier_API_mp_support_callout  api_barrier_mp_support         
)                                                                     
{                                                                     
   4cd9c:	242e 000c      	movel %fp@(12),%d2                          
   4cda0:	262e 0014      	movel %fp@(20),%d3                          
   4cda4:	282e 0018      	movel %fp@(24),%d4                          
  Thread_Control *executing;                                          
  ISR_Level       level;                                              
                                                                      
  executing = _Thread_Executing;                                      
  executing->Wait.return_code = CORE_BARRIER_STATUS_SUCCESSFUL;       
  _ISR_Disable( level );                                              
   4cda8:	40c1           	movew %sr,%d1                               
   4cdaa:	8081           	orl %d1,%d0                                 
   4cdac:	46c0           	movew %d0,%sr                               
  the_barrier->number_of_waiting_threads++;                           
   4cdae:	2028 0048      	movel %a0@(72),%d0                          
   4cdb2:	5280           	addql #1,%d0                                
   4cdb4:	2140 0048      	movel %d0,%a0@(72)                          
  if ( _CORE_barrier_Is_automatic( &the_barrier->Attributes ) ) {     
   4cdb8:	4aa8 0040      	tstl %a0@(64)                               
   4cdbc:	6626           	bnes 4cde4 <_CORE_barrier_Wait+0x64>        
    if ( the_barrier->number_of_waiting_threads ==                    
   4cdbe:	b0a8 0044      	cmpl %a0@(68),%d0                           
   4cdc2:	6620           	bnes 4cde4 <_CORE_barrier_Wait+0x64>        
	 the_barrier->Attributes.maximum_count) {                            
      executing->Wait.return_code = CORE_BARRIER_STATUS_AUTOMATICALLY_RELEASED;
   4cdc4:	7001           	moveq #1,%d0                                
   4cdc6:	2340 0034      	movel %d0,%a1@(52)                          
      _ISR_Enable( level );                                           
   4cdca:	46c1           	movew %d1,%sr                               
      _CORE_barrier_Release( the_barrier, id, api_barrier_mp_support );
   4cdcc:	2d44 0010      	movel %d4,%fp@(16)                          
   4cdd0:	2d42 000c      	movel %d2,%fp@(12)                          
  executing->Wait.queue          = &the_barrier->Wait_queue;          
  executing->Wait.id             = id;                                
  _ISR_Enable( level );                                               
                                                                      
  _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );         
}                                                                     
   4cdd4:	4cd7 001c      	moveml %sp@,%d2-%d4                         
  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 );
   4cdd8:	2d48 0008      	movel %a0,%fp@(8)                           
  executing->Wait.queue          = &the_barrier->Wait_queue;          
  executing->Wait.id             = id;                                
  _ISR_Enable( level );                                               
                                                                      
  _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );         
}                                                                     
   4cddc:	4e5e           	unlk %fp                                    
  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 );
   4cdde:	4ef9 0004 cd4c 	jmp 4cd4c <_CORE_barrier_Release>           
   4cde4:	7001           	moveq #1,%d0                                
   4cde6:	2140 0030      	movel %d0,%a0@(48)                          
      return;                                                         
    }                                                                 
  }                                                                   
                                                                      
  _Thread_queue_Enter_critical_section( &the_barrier->Wait_queue );   
  executing->Wait.queue          = &the_barrier->Wait_queue;          
   4cdea:	2348 0044      	movel %a0,%a1@(68)                          
  executing->Wait.id             = id;                                
   4cdee:	2342 0020      	movel %d2,%a1@(32)                          
  _ISR_Enable( level );                                               
   4cdf2:	46c1           	movew %d1,%sr                               
                                                                      
  _Thread_queue_Enqueue( &the_barrier->Wait_queue, timeout );         
   4cdf4:	2d43 000c      	movel %d3,%fp@(12)                          
   4cdf8:	203c 0004 9eac 	movel #302764,%d0                           
   4cdfe:	2d48 0008      	movel %a0,%fp@(8)                           
}                                                                     
   4ce02:	4cd7 001c      	moveml %sp@,%d2-%d4                         
  _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 );         
   4ce06:	2d40 0010      	movel %d0,%fp@(16)                          
}                                                                     
   4ce0a:	4e5e           	unlk %fp                                    
  _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 );         
   4ce0c:	4ef9 0004 9bb4 	jmp 49bb4 <_Thread_queue_Enqueue_with_handler>
	...                                                                  
                                                                      

0004e140 <_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 );
   4e140:	223c 0000 0700 	movel #1792,%d1                             
  void                            *buffer,                            
  size_t                          *size_p,                            
  bool                             wait,                              
  Watchdog_Interval                timeout                            
)                                                                     
{                                                                     
   4e146:	4e56 ffe4      	linkw %fp,#-28                              
  ISR_Level                          level;                           
  CORE_message_queue_Buffer_control *the_message;                     
  Thread_Control                    *executing;                       
                                                                      
  executing = _Thread_Executing;                                      
   4e14a:	2079 0006 62b4 	moveal 662b4 <_Per_CPU_Information+0xc>,%a0 
  void                            *buffer,                            
  size_t                          *size_p,                            
  bool                             wait,                              
  Watchdog_Interval                timeout                            
)                                                                     
{                                                                     
   4e150:	48d7 0c7c      	moveml %d2-%d6/%a2-%a3,%sp@                 
   4e154:	246e 0008      	moveal %fp@(8),%a2                          
   4e158:	282e 000c      	movel %fp@(12),%d4                          
   4e15c:	242e 0010      	movel %fp@(16),%d2                          
   4e160:	226e 0014      	moveal %fp@(20),%a1                         
   4e164:	262e 001c      	movel %fp@(28),%d3                          
   4e168:	1a2e 001b      	moveb %fp@(27),%d5                          
  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; 
   4e16c:	42a8 0034      	clrl %a0@(52)                               
  _ISR_Disable( level );                                              
   4e170:	40c0           	movew %sr,%d0                               
   4e172:	8280           	orl %d0,%d1                                 
   4e174:	46c1           	movew %d1,%sr                               
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
   4e176:	220a           	movel %a2,%d1                               
   4e178:	2c0a           	movel %a2,%d6                               
   4e17a:	0681 0000 0050 	addil #80,%d1                               
   4e180:	0686 0000 0054 	addil #84,%d6                               
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
   4e186:	266a 0050      	moveal %a2@(80),%a3                         
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
   4e18a:	bc8b           	cmpl %a3,%d6                                
   4e18c:	674a           	beqs 4e1d8 <_CORE_message_queue_Seize+0x98> 
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
   4e18e:	2053           	moveal %a3@,%a0                             
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_first_unprotected(        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
   4e190:	2141 0004      	movel %d1,%a0@(4)                           
  the_message = _CORE_message_queue_Get_pending_message( the_message_queue );
  if ( the_message != NULL ) {                                        
    the_message_queue->number_of_pending_messages -= 1;               
   4e194:	53aa 0048      	subql #1,%a2@(72)                           
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
   4e198:	2548 0050      	movel %a0,%a2@(80)                          
    _ISR_Enable( level );                                             
   4e19c:	46c0           	movew %d0,%sr                               
                                                                      
    *size_p = the_message->Contents.size;                             
   4e19e:	22ab 0008      	movel %a3@(8),%a1@                          
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 );
   4e1a2:	45ea 0060      	lea %a2@(96),%a2                            
    _Thread_Executing->Wait.count =                                   
   4e1a6:	2079 0006 62b4 	moveal 662b4 <_Per_CPU_Information+0xc>,%a0 
   4e1ac:	42a8 0024      	clrl %a0@(36)                               
  const void *source,                                                 
  void       *destination,                                            
  size_t      size                                                    
)                                                                     
{                                                                     
  memcpy(destination, source, size);                                  
   4e1b0:	2f11           	movel %a1@,%sp@-                            
   4e1b2:	486b 000c      	pea %a3@(12)                                
   4e1b6:	2f02           	movel %d2,%sp@-                             
   4e1b8:	4eb9 0005 4810 	jsr 54810 <memcpy>                          
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 );
   4e1be:	4fef 000c      	lea %sp@(12),%sp                            
   4e1c2:	2d4b 000c      	movel %a3,%fp@(12)                          
   4e1c6:	2d4a 0008      	movel %a2,%fp@(8)                           
  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 );   
}                                                                     
   4e1ca:	4cee 0c7c ffe4 	moveml %fp@(-28),%d2-%d6/%a2-%a3            
   4e1d0:	4e5e           	unlk %fp                                    
   4e1d2:	4ef9 0004 dfb8 	jmp 4dfb8 <_Chain_Append>                   
      return;                                                         
    }                                                                 
    #endif                                                            
  }                                                                   
                                                                      
  if ( !wait ) {                                                      
   4e1d8:	4a05           	tstb %d5                                    
   4e1da:	6612           	bnes 4e1ee <_CORE_message_queue_Seize+0xae> 
    _ISR_Enable( level );                                             
   4e1dc:	46c0           	movew %d0,%sr                               
    executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
   4e1de:	7004           	moveq #4,%d0                                
  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 );   
}                                                                     
   4e1e0:	4cee 0c7c ffe4 	moveml %fp@(-28),%d2-%d6/%a2-%a3            
    #endif                                                            
  }                                                                   
                                                                      
  if ( !wait ) {                                                      
    _ISR_Enable( level );                                             
    executing->Wait.return_code = CORE_MESSAGE_QUEUE_STATUS_UNSATISFIED_NOWAIT;
   4e1e6:	2140 0034      	movel %d0,%a0@(52)                          
  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 );   
}                                                                     
   4e1ea:	4e5e           	unlk %fp                                    
   4e1ec:	4e75           	rts                                         
                                                                      
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;
   4e1ee:	7201           	moveq #1,%d1                                
   4e1f0:	2541 0030      	movel %d1,%a2@(48)                          
  }                                                                   
                                                                      
  _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;     
   4e1f4:	2142 002c      	movel %d2,%a0@(44)                          
    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;             
   4e1f8:	214a 0044      	movel %a2,%a0@(68)                          
  executing->Wait.id = id;                                            
   4e1fc:	2144 0020      	movel %d4,%a0@(32)                          
  executing->Wait.return_argument_second.mutable_object = buffer;     
  executing->Wait.return_argument = size_p;                           
   4e200:	2149 0028      	movel %a1,%a0@(40)                          
  /* Wait.count will be filled in with the message priority */        
  _ISR_Enable( level );                                               
   4e204:	46c0           	movew %d0,%sr                               
                                                                      
  _Thread_queue_Enqueue( &the_message_queue->Wait_queue, timeout );   
   4e206:	2d43 000c      	movel %d3,%fp@(12)                          
   4e20a:	203c 0005 032c 	movel #328492,%d0                           
   4e210:	2d4a 0008      	movel %a2,%fp@(8)                           
}                                                                     
   4e214:	4cee 0c7c ffe4 	moveml %fp@(-28),%d2-%d6/%a2-%a3            
  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 );   
   4e21a:	2d40 0010      	movel %d0,%fp@(16)                          
}                                                                     
   4e21e:	4e5e           	unlk %fp                                    
  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 );   
   4e220:	4ef9 0005 0034 	jmp 50034 <_Thread_queue_Enqueue_with_handler>
	...                                                                  
                                                                      

000463fc <_CORE_mutex_Initialize>: CORE_mutex_Status _CORE_mutex_Initialize( CORE_mutex_Control *the_mutex, CORE_mutex_Attributes *the_mutex_attributes, uint32_t initial_lock ) {
   463fc:	4e56 fff4      	linkw %fp,#-12                              
   46400:	48d7 0c04      	moveml %d2/%a2-%a3,%sp@                     
/* Add this to the RTEMS environment later ?????????                  
  rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||                  
                initial_lock == CORE_MUTEX_UNLOCKED );                
 */                                                                   
                                                                      
  the_mutex->Attributes    = *the_mutex_attributes;                   
   46404:	4878 000e      	pea e <OPER1+0x2>                           
CORE_mutex_Status _CORE_mutex_Initialize(                             
  CORE_mutex_Control           *the_mutex,                            
  CORE_mutex_Attributes        *the_mutex_attributes,                 
  uint32_t                      initial_lock                          
)                                                                     
{                                                                     
   46408:	266e 000c      	moveal %fp@(12),%a3                         
   4640c:	246e 0008      	moveal %fp@(8),%a2                          
/* Add this to the RTEMS environment later ?????????                  
  rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||                  
                initial_lock == CORE_MUTEX_UNLOCKED );                
 */                                                                   
                                                                      
  the_mutex->Attributes    = *the_mutex_attributes;                   
   46410:	2f0b           	movel %a3,%sp@-                             
   46412:	486a 0040      	pea %a2@(64)                                
CORE_mutex_Status _CORE_mutex_Initialize(                             
  CORE_mutex_Control           *the_mutex,                            
  CORE_mutex_Attributes        *the_mutex_attributes,                 
  uint32_t                      initial_lock                          
)                                                                     
{                                                                     
   46416:	242e 0010      	movel %fp@(16),%d2                          
/* Add this to the RTEMS environment later ?????????                  
  rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||                  
                initial_lock == CORE_MUTEX_UNLOCKED );                
 */                                                                   
                                                                      
  the_mutex->Attributes    = *the_mutex_attributes;                   
   4641a:	4eb9 0004 c854 	jsr 4c854 <memcpy>                          
  the_mutex->lock          = initial_lock;                            
  the_mutex->blocked_count = 0;                                       
                                                                      
  if ( initial_lock == CORE_MUTEX_LOCKED ) {                          
   46420:	4fef 000c      	lea %sp@(12),%sp                            
  rtems_assert( initial_lock == CORE_MUTEX_LOCKED ||                  
                initial_lock == CORE_MUTEX_UNLOCKED );                
 */                                                                   
                                                                      
  the_mutex->Attributes    = *the_mutex_attributes;                   
  the_mutex->lock          = initial_lock;                            
   46424:	2542 004e      	movel %d2,%a2@(78)                          
  the_mutex->blocked_count = 0;                                       
   46428:	42aa 0056      	clrl %a2@(86)                               
                                                                      
  if ( initial_lock == CORE_MUTEX_LOCKED ) {                          
   4642c:	4a82           	tstl %d2                                    
   4642e:	6638           	bnes 46468 <_CORE_mutex_Initialize+0x6c>    
    the_mutex->nest_count = 1;                                        
   46430:	7001           	moveq #1,%d0                                
    the_mutex->holder     = _Thread_Executing;                        
    the_mutex->holder_id  = _Thread_Executing->Object.id;             
    if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 
   46432:	7202           	moveq #2,%d1                                
  the_mutex->lock          = initial_lock;                            
  the_mutex->blocked_count = 0;                                       
                                                                      
  if ( initial_lock == CORE_MUTEX_LOCKED ) {                          
    the_mutex->nest_count = 1;                                        
    the_mutex->holder     = _Thread_Executing;                        
   46434:	2079 0005 d9bc 	moveal 5d9bc <_Per_CPU_Information+0xc>,%a0 
  the_mutex->Attributes    = *the_mutex_attributes;                   
  the_mutex->lock          = initial_lock;                            
  the_mutex->blocked_count = 0;                                       
                                                                      
  if ( initial_lock == CORE_MUTEX_LOCKED ) {                          
    the_mutex->nest_count = 1;                                        
   4643a:	2540 0052      	movel %d0,%a2@(82)                          
    the_mutex->holder     = _Thread_Executing;                        
    the_mutex->holder_id  = _Thread_Executing->Object.id;             
   4643e:	2568 0008 005e 	movel %a0@(8),%a2@(94)                      
    STATES_WAITING_FOR_MUTEX,                                         
    CORE_MUTEX_TIMEOUT                                                
  );                                                                  
                                                                      
  return CORE_MUTEX_STATUS_SUCCESSFUL;                                
}                                                                     
   46444:	202a 0046      	movel %a2@(70),%d0                          
  the_mutex->lock          = initial_lock;                            
  the_mutex->blocked_count = 0;                                       
                                                                      
  if ( initial_lock == CORE_MUTEX_LOCKED ) {                          
    the_mutex->nest_count = 1;                                        
    the_mutex->holder     = _Thread_Executing;                        
   46448:	2548 005a      	movel %a0,%a2@(90)                          
    the_mutex->holder_id  = _Thread_Executing->Object.id;             
    if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 
   4644c:	b280           	cmpl %d0,%d1                                
   4644e:	6708           	beqs 46458 <_CORE_mutex_Initialize+0x5c>    
   46450:	123c 0003      	moveb #3,%d1                                
   46454:	b280           	cmpl %d0,%d1                                
   46456:	661c           	bnes 46474 <_CORE_mutex_Initialize+0x78>    
         _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
                                                                      
      if ( _Thread_Executing->current_priority <                      
   46458:	202a 004a      	movel %a2@(74),%d0                          
   4645c:	b0a8 0014      	cmpl %a0@(20),%d0                           
   46460:	6236           	bhis 46498 <_CORE_mutex_Initialize+0x9c>    <== NEVER TAKEN
       _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++;                            
   46462:	52a8 001c      	addql #1,%a0@(28)                           
   46466:	600c           	bras 46474 <_CORE_mutex_Initialize+0x78>    
    }                                                                 
  } else {                                                            
    the_mutex->nest_count = 0;                                        
   46468:	42aa 0052      	clrl %a2@(82)                               
    the_mutex->holder     = NULL;                                     
   4646c:	42aa 005a      	clrl %a2@(90)                               
    the_mutex->holder_id  = 0;                                        
   46470:	42aa 005e      	clrl %a2@(94)                               
  }                                                                   
                                                                      
  _Thread_queue_Initialize(                                           
   46474:	4878 0004      	pea 4 <CONTEXT_ARG>                         
   46478:	4878 0400      	pea 400 <D_BIAS+0x2>                        
   4647c:	4aab 0006      	tstl %a3@(6)                                
   46480:	56c0           	sne %d0                                     
   46482:	49c0           	extbl %d0                                   
   46484:	4480           	negl %d0                                    
   46486:	2f00           	movel %d0,%sp@-                             
   46488:	2f0a           	movel %a2,%sp@-                             
   4648a:	4eb9 0004 8304 	jsr 48304 <_Thread_queue_Initialize>        
      THREAD_QUEUE_DISCIPLINE_FIFO : THREAD_QUEUE_DISCIPLINE_PRIORITY,
    STATES_WAITING_FOR_MUTEX,                                         
    CORE_MUTEX_TIMEOUT                                                
  );                                                                  
                                                                      
  return CORE_MUTEX_STATUS_SUCCESSFUL;                                
   46490:	4fef 0010      	lea %sp@(16),%sp                            
   46494:	4280           	clrl %d0                                    
   46496:	6002           	bras 4649a <_CORE_mutex_Initialize+0x9e>    
    if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 
         _CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
                                                                      
      if ( _Thread_Executing->current_priority <                      
             the_mutex->Attributes.priority_ceiling )                 
       return CORE_MUTEX_STATUS_CEILING_VIOLATED;                     
   46498:	7005           	moveq #5,%d0                                
    STATES_WAITING_FOR_MUTEX,                                         
    CORE_MUTEX_TIMEOUT                                                
  );                                                                  
                                                                      
  return CORE_MUTEX_STATUS_SUCCESSFUL;                                
}                                                                     
   4649a:	4cee 0c04 fff4 	moveml %fp@(-12),%d2/%a2-%a3                
   464a0:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00046704 <_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 ) {
   46704:	4e56 0000      	linkw %fp,#0                                
   46708:	2f0a           	movel %a2,%sp@-                             
   4670a:	246e 0008      	moveal %fp@(8),%a2                          
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
                                                                      
  if ( (the_thread = _Thread_queue_Dequeue(&the_semaphore->Wait_queue)) ) {
   4670e:	2f0a           	movel %a2,%sp@-                             
   46710:	4eb9 0004 7f98 	jsr 47f98 <_Thread_queue_Dequeue>           
   46716:	588f           	addql #4,%sp                                
   46718:	4a80           	tstl %d0                                    
   4671a:	6624           	bnes 46740 <_CORE_semaphore_Surrender+0x3c> 
    if ( !_Objects_Is_local_id( the_thread->Object.id ) )             
      (*api_semaphore_mp_support) ( the_thread, id );                 
#endif                                                                
                                                                      
  } else {                                                            
    _ISR_Disable( level );                                            
   4671c:	303c 0700      	movew #1792,%d0                             
   46720:	40c1           	movew %sr,%d1                               
   46722:	8081           	orl %d1,%d0                                 
   46724:	46c0           	movew %d0,%sr                               
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
   46726:	202a 0048      	movel %a2@(72),%d0                          
   4672a:	b0aa 0040      	cmpl %a2@(64),%d0                           
   4672e:	640a           	bccs 4673a <_CORE_semaphore_Surrender+0x36> <== NEVER TAKEN
        the_semaphore->count += 1;                                    
   46730:	5280           	addql #1,%d0                                
   46732:	2540 0048      	movel %d0,%a2@(72)                          
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
   46736:	4280           	clrl %d0                                    
   46738:	6002           	bras 4673c <_CORE_semaphore_Surrender+0x38> 
  } else {                                                            
    _ISR_Disable( level );                                            
      if ( the_semaphore->count < the_semaphore->Attributes.maximum_count )
        the_semaphore->count += 1;                                    
      else                                                            
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
   4673a:	7004           	moveq #4,%d0                                <== NOT EXECUTED
    _ISR_Enable( level );                                             
   4673c:	46c1           	movew %d1,%sr                               
   4673e:	6002           	bras 46742 <_CORE_semaphore_Surrender+0x3e> 
{                                                                     
  Thread_Control *the_thread;                                         
  ISR_Level       level;                                              
  CORE_semaphore_Status status;                                       
                                                                      
  status = CORE_SEMAPHORE_STATUS_SUCCESSFUL;                          
   46740:	4280           	clrl %d0                                    
        status = CORE_SEMAPHORE_MAXIMUM_COUNT_EXCEEDED;               
    _ISR_Enable( level );                                             
  }                                                                   
                                                                      
  return status;                                                      
}                                                                     
   46742:	246e fffc      	moveal %fp@(-4),%a2                         
   46746:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

000455d8 <_Event_Surrender>: api = the_thread->API_Extensions[ THREAD_API_RTEMS ]; option_set = (rtems_option) the_thread->Wait.option; _ISR_Disable( level );
   455d8:	203c 0000 0700 	movel #1792,%d0                             
 */                                                                   
                                                                      
void _Event_Surrender(                                                
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
   455de:	4e56 ffec      	linkw %fp,#-20                              
   455e2:	48d7 043c      	moveml %d2-%d5/%a2,%sp@                     
   455e6:	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 ];               
   455ea:	206a 00fc      	moveal %a2@(252),%a0                        
                                                                      
  option_set = (rtems_option) the_thread->Wait.option;                
   455ee:	282a 0030      	movel %a2@(48),%d4                          
                                                                      
  _ISR_Disable( level );                                              
   455f2:	40c1           	movew %sr,%d1                               
   455f4:	8081           	orl %d1,%d0                                 
   455f6:	46c0           	movew %d0,%sr                               
  pending_events  = api->pending_events;                              
  event_condition = (rtems_event_set) the_thread->Wait.count;         
   455f8:	262a 0024      	movel %a2@(36),%d3                          
RTEMS_INLINE_ROUTINE rtems_event_set _Event_sets_Get(                 
  rtems_event_set the_event_set,                                      
  rtems_event_set the_event_condition                                 
)                                                                     
{                                                                     
   return ( the_event_set & the_event_condition );                    
   455fc:	2003           	movel %d3,%d0                               
  api = the_thread->API_Extensions[ THREAD_API_RTEMS ];               
                                                                      
  option_set = (rtems_option) the_thread->Wait.option;                
                                                                      
  _ISR_Disable( level );                                              
  pending_events  = api->pending_events;                              
   455fe:	2410           	movel %a0@,%d2                              
   45600:	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 ) ) {                      
   45602:	6700 00ca      	beqw 456ce <_Event_Surrender+0xf6>          
                                                                      
  /*                                                                  
   *  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() &&                                       
   45606:	4ab9 0005 d9b8 	tstl 5d9b8 <_Per_CPU_Information+0x8>       
   4560c:	674a           	beqs 45658 <_Event_Surrender+0x80>          
   4560e:	b5f9 0005 d9bc 	cmpal 5d9bc <_Per_CPU_Information+0xc>,%a2  
   45614:	6642           	bnes 45658 <_Event_Surrender+0x80>          
       _Thread_Is_executing( the_thread ) &&                          
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
   45616:	2279 0005 d9f8 	moveal 5d9f8 <_Event_Sync_state>,%a1        
  /*                                                                  
   *  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 ) &&                          
   4561c:	7a02           	moveq #2,%d5                                
   4561e:	ba89           	cmpl %a1,%d5                                
   45620:	670e           	beqs 45630 <_Event_Surrender+0x58>          <== NEVER TAKEN
       ((_Event_Sync_state == THREAD_BLOCKING_OPERATION_TIMEOUT) ||   
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
   45622:	2279 0005 d9f8 	moveal 5d9f8 <_Event_Sync_state>,%a1        
   *  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) ||   
   45628:	1a3c 0001      	moveb #1,%d5                                
   4562c:	ba89           	cmpl %a1,%d5                                
   4562e:	6628           	bnes 45658 <_Event_Surrender+0x80>          
        (_Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED)) ) {
    if ( seized_events == event_condition || _Options_Is_any(option_set) ) {
   45630:	b680           	cmpl %d0,%d3                                
   45632:	6708           	beqs 4563c <_Event_Surrender+0x64>          
   45634:	0804 0001      	btst #1,%d4                                 
   45638:	6700 0094      	beqw 456ce <_Event_Surrender+0xf6>          
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) );                            
   4563c:	2600           	movel %d0,%d3                               
   4563e:	4683           	notl %d3                                    
   45640:	c682           	andl %d2,%d3                                
   45642:	2083           	movel %d3,%a0@                              
      api->pending_events = _Event_sets_Clear( pending_events,seized_events );
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
   45644:	206a 0028      	moveal %a2@(40),%a0                         
       _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;                                     
   45648:	42aa 0024      	clrl %a2@(36)                               
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
   4564c:	2080           	movel %d0,%a0@                              
      _Event_Sync_state = THREAD_BLOCKING_OPERATION_SATISFIED;        
   4564e:	7003           	moveq #3,%d0                                
   45650:	23c0 0005 d9f8 	movel %d0,5d9f8 <_Event_Sync_state>         
   45656:	6076           	bras 456ce <_Event_Surrender+0xf6>          
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_for_event (              
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_FOR_EVENT);                    
   45658:	2a2a 0010      	movel %a2@(16),%d5                          
   4565c:	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 ) ) {  
   45662:	676a           	beqs 456ce <_Event_Surrender+0xf6>          
    if ( seized_events == event_condition || _Options_Is_any( option_set ) ) {
   45664:	b680           	cmpl %d0,%d3                                
   45666:	6706           	beqs 4566e <_Event_Surrender+0x96>          
   45668:	0804 0001      	btst #1,%d4                                 
   4566c:	6760           	beqs 456ce <_Event_Surrender+0xf6>          <== NEVER TAKEN
   4566e:	2600           	movel %d0,%d3                               
   45670:	4683           	notl %d3                                    
   45672:	c682           	andl %d2,%d3                                
   45674:	2083           	movel %d3,%a0@                              
      api->pending_events = _Event_sets_Clear( pending_events, seized_events );
      the_thread->Wait.count = 0;                                     
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
   45676:	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;                                     
   4567a:	42aa 0024      	clrl %a2@(36)                               
      *(rtems_event_set *)the_thread->Wait.return_argument = seized_events;
   4567e:	2080           	movel %d0,%a0@                              
                                                                      
      _ISR_Flash( level );                                            
   45680:	203c 0000 0700 	movel #1792,%d0                             
   45686:	46c1           	movew %d1,%sr                               
   45688:	8081           	orl %d1,%d0                                 
   4568a:	46c0           	movew %d0,%sr                               
                                                                      
      if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {             
   4568c:	7a02           	moveq #2,%d5                                
   4568e:	baaa 0050      	cmpl %a2@(80),%d5                           
   45692:	6714           	beqs 456a8 <_Event_Surrender+0xd0>          
        _ISR_Enable( level );                                         
   45694:	46c1           	movew %d1,%sr                               
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
   45696:	2f3c 1003 fff8 	movel #268697592,%sp@-                      
   4569c:	2f0a           	movel %a2,%sp@-                             
   4569e:	4eb9 0004 7954 	jsr 47954 <_Thread_Clear_state>             
   456a4:	508f           	addql #8,%sp                                
   456a6:	6028           	bras 456d0 <_Event_Surrender+0xf8>          
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
   456a8:	7003           	moveq #3,%d0                                
   456aa:	2540 0050      	movel %d0,%a2@(80)                          
        _Thread_Unblock( the_thread );                                
      } else {                                                        
        _Watchdog_Deactivate( &the_thread->Timer );                   
        _ISR_Enable( level );                                         
   456ae:	46c1           	movew %d1,%sr                               
        (void) _Watchdog_Remove( &the_thread->Timer );                
   456b0:	486a 0048      	pea %a2@(72)                                
   456b4:	4eb9 0004 89c8 	jsr 489c8 <_Watchdog_Remove>                
   456ba:	2f3c 1003 fff8 	movel #268697592,%sp@-                      
   456c0:	2f0a           	movel %a2,%sp@-                             
   456c2:	4eb9 0004 7954 	jsr 47954 <_Thread_Clear_state>             
   456c8:	4fef 000c      	lea %sp@(12),%sp                            
   456cc:	6002           	bras 456d0 <_Event_Surrender+0xf8>          
        _Thread_Unblock( the_thread );                                
      }                                                               
      return;                                                         
    }                                                                 
  }                                                                   
  _ISR_Enable( level );                                               
   456ce:	46c1           	movew %d1,%sr                               
}                                                                     
   456d0:	4cee 043c ffec 	moveml %fp@(-20),%d2-%d5/%a2                
   456d6:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

000456dc <_Event_Timeout>: void _Event_Timeout( Objects_Id id, void *ignored ) {
   456dc:	4e56 fffc      	linkw %fp,#-4                               
   456e0:	2f03           	movel %d3,%sp@-                             
   456e2:	2f02           	movel %d2,%sp@-                             
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
  ISR_Level          level;                                           
                                                                      
  the_thread = _Thread_Get( id, &location );                          
   456e4:	486e fffc      	pea %fp@(-4)                                
   456e8:	2f2e 0008      	movel %fp@(8),%sp@-                         
   456ec:	4eb9 0004 7cf0 	jsr 47cf0 <_Thread_Get>                     
  switch ( location ) {                                               
   456f2:	508f           	addql #8,%sp                                
   456f4:	4aae fffc      	tstl %fp@(-4)                               
   456f8:	665c           	bnes 45756 <_Event_Timeout+0x7a>            <== NEVER TAKEN
       *                                                              
       *  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 );                                          
   456fa:	223c 0000 0700 	movel #1792,%d1                             
   45700:	40c2           	movew %sr,%d2                               
   45702:	8282           	orl %d2,%d1                                 
   45704:	46c1           	movew %d1,%sr                               
            _ISR_Enable( level );                                     
            return;                                                   
          }                                                           
        #endif                                                        
                                                                      
        the_thread->Wait.count = 0;                                   
   45706:	2040           	moveal %d0,%a0                              
   45708:	42a8 0024      	clrl %a0@(36)                               
        if ( _Thread_Is_executing( the_thread ) ) {                   
   4570c:	b0b9 0005 d9bc 	cmpl 5d9bc <_Per_CPU_Information+0xc>,%d0   
   45712:	6614           	bnes 45728 <_Event_Timeout+0x4c>            
          if ( _Event_Sync_state == THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )
   45714:	2239 0005 d9f8 	movel 5d9f8 <_Event_Sync_state>,%d1         
   4571a:	7601           	moveq #1,%d3                                
   4571c:	b681           	cmpl %d1,%d3                                
   4571e:	6608           	bnes 45728 <_Event_Timeout+0x4c>            
            _Event_Sync_state = THREAD_BLOCKING_OPERATION_TIMEOUT;    
   45720:	7202           	moveq #2,%d1                                
   45722:	23c1 0005 d9f8 	movel %d1,5d9f8 <_Event_Sync_state>         
        }                                                             
                                                                      
        the_thread->Wait.return_code = RTEMS_TIMEOUT;                 
   45728:	7606           	moveq #6,%d3                                
   4572a:	2040           	moveal %d0,%a0                              
   4572c:	2143 0034      	movel %d3,%a0@(52)                          
      _ISR_Enable( level );                                           
   45730:	46c2           	movew %d2,%sr                               
   45732:	2f3c 1003 fff8 	movel #268697592,%sp@-                      
   45738:	2f00           	movel %d0,%sp@-                             
   4573a:	4eb9 0004 7954 	jsr 47954 <_Thread_Clear_state>             
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level--;                                 
    return _Thread_Dispatch_disable_level;                            
   45740:	508f           	addql #8,%sp                                
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level--;                                 
   45742:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   45748:	5380           	subql #1,%d0                                
   4574a:	23c0 0005 d828 	movel %d0,5d828 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   45750:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
}                                                                     
   45756:	242e fff4      	movel %fp@(-12),%d2                         
   4575a:	262e fff8      	movel %fp@(-8),%d3                          
   4575e:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004a8e8 <_Heap_Extend>: Heap_Control *heap, void *extend_area_begin_ptr, uintptr_t extend_area_size, uintptr_t *extended_size_ptr ) {
   4a8e8:	4e56 ffcc      	linkw %fp,#-52                              
   4a8ec:	202e 0010      	movel %fp@(16),%d0                          
   4a8f0:	48d7 3cfc      	moveml %d2-%d7/%a2-%a5,%sp@                 
   4a8f4:	246e 0008      	moveal %fp@(8),%a2                          
   4a8f8:	262e 000c      	movel %fp@(12),%d3                          
  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;
   4a8fc:	2403           	movel %d3,%d2                               
   4a8fe:	d480           	addl %d0,%d2                                
  uintptr_t const free_size = stats->free_size;                       
   4a900:	206a 0030      	moveal %a2@(48),%a0                         
  uintptr_t extend_area_size,                                         
  uintptr_t *extended_size_ptr                                        
)                                                                     
{                                                                     
  Heap_Statistics *const stats = &heap->stats;                        
  Heap_Block *const first_block = heap->first_block;                  
   4a904:	282a 0020      	movel %a2@(32),%d4                          
  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;                        
   4a908:	2a2a 0010      	movel %a2@(16),%d5                          
  uintptr_t const min_block_size = heap->min_block_size;              
   4a90c:	222a 0014      	movel %a2@(20),%d1                          
  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;                              
   4a910:	42ae fff8      	clrl %fp@(-8)                               
  Heap_Block *extend_last_block = NULL;                               
   4a914:	42ae fffc      	clrl %fp@(-4)                               
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
  uintptr_t const extend_area_begin = (uintptr_t) extend_area_begin_ptr;
  uintptr_t const extend_area_end = extend_area_begin + extend_area_size;
  uintptr_t const free_size = stats->free_size;                       
   4a918:	2d48 fff4      	movel %a0,%fp@(-12)                         
  uintptr_t extend_first_block_size = 0;                              
  uintptr_t extended_size = 0;                                        
  bool extend_area_ok = false;                                        
                                                                      
  if ( extend_area_end < extend_area_begin ) {                        
   4a91c:	b682           	cmpl %d2,%d3                                
   4a91e:	6200 01a6      	bhiw 4aac6 <_Heap_Extend+0x1de>             
    return false;                                                     
  }                                                                   
                                                                      
  extend_area_ok = _Heap_Get_first_and_last_block(                    
   4a922:	486e fffc      	pea %fp@(-4)                                
   4a926:	486e fff8      	pea %fp@(-8)                                
   4a92a:	2f01           	movel %d1,%sp@-                             
   4a92c:	2f05           	movel %d5,%sp@-                             
   4a92e:	2f00           	movel %d0,%sp@-                             
   4a930:	2f03           	movel %d3,%sp@-                             
   4a932:	4eb9 0004 698e 	jsr 4698e <_Heap_Get_first_and_last_block>  
    page_size,                                                        
    min_block_size,                                                   
    &extend_first_block,                                              
    &extend_last_block                                                
  );                                                                  
  if (!extend_area_ok ) {                                             
   4a938:	4fef 0018      	lea %sp@(24),%sp                            
   4a93c:	4a00           	tstb %d0                                    
   4a93e:	6700 0186      	beqw 4aac6 <_Heap_Extend+0x1de>             
   4a942:	2044           	moveal %d4,%a0                              
   4a944:	9bcd           	subal %a5,%a5                               
   4a946:	4281           	clrl %d1                                    
   4a948:	97cb           	subal %a3,%a3                               
   4a94a:	99cc           	subal %a4,%a4                               
    return false;                                                     
  }                                                                   
                                                                      
  do {                                                                
    uintptr_t const sub_area_begin = (start_block != first_block) ?   
      (uintptr_t) start_block : heap->area_begin;                     
   4a94c:	b888           	cmpl %a0,%d4                                
   4a94e:	6704           	beqs 4a954 <_Heap_Extend+0x6c>              
   4a950:	2248           	moveal %a0,%a1                              
   4a952:	6004           	bras 4a958 <_Heap_Extend+0x70>              
   4a954:	226a 0018      	moveal %a2@(24),%a1                         
    uintptr_t const sub_area_end = start_block->prev_size;            
   4a958:	2010           	movel %a0@,%d0                              
    Heap_Block *const end_block =                                     
      _Heap_Block_of_alloc_area( sub_area_end, page_size );           
                                                                      
    if (                                                              
   4a95a:	b680           	cmpl %d0,%d3                                
   4a95c:	6406           	bccs 4a964 <_Heap_Extend+0x7c>              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
   4a95e:	b3c2           	cmpal %d2,%a1                               
   4a960:	6500 0164      	bcsw 4aac6 <_Heap_Extend+0x1de>             
    ) {                                                               
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
   4a964:	b3c2           	cmpal %d2,%a1                               
   4a966:	6706           	beqs 4a96e <_Heap_Extend+0x86>              
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
   4a968:	b082           	cmpl %d2,%d0                                
   4a96a:	6206           	bhis 4a972 <_Heap_Extend+0x8a>              
   4a96c:	6006           	bras 4a974 <_Heap_Extend+0x8c>              
      sub_area_end > extend_area_begin && extend_area_end > sub_area_begin
    ) {                                                               
      return false;                                                   
    }                                                                 
                                                                      
    if ( extend_area_end == sub_area_begin ) {                        
   4a96e:	2848           	moveal %a0,%a4                              
   4a970:	6002           	bras 4a974 <_Heap_Extend+0x8c>              
      merge_below_block = start_block;                                
    } else if ( extend_area_end < sub_area_end ) {                    
   4a972:	2208           	movel %a0,%d1                               
   4a974:	2e00           	movel %d0,%d7                               
   4a976:	2240           	moveal %d0,%a1                              
   4a978:	5189           	subql #8,%a1                                
   4a97a:	4c45 7006      	remul %d5,%d6,%d7                           
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
   4a97e:	93c6           	subal %d6,%a1                               
      link_below_block = start_block;                                 
    }                                                                 
                                                                      
    if ( sub_area_end == extend_area_begin ) {                        
   4a980:	b680           	cmpl %d0,%d3                                
   4a982:	6606           	bnes 4a98a <_Heap_Extend+0xa2>              
      start_block->prev_size = extend_area_end;                       
   4a984:	2082           	movel %d2,%a0@                              
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 )   
   4a986:	2649           	moveal %a1,%a3                              
   4a988:	6006           	bras 4a990 <_Heap_Extend+0xa8>              
                                                                      
      merge_above_block = end_block;                                  
    } else if ( sub_area_end < extend_area_begin ) {                  
   4a98a:	b680           	cmpl %d0,%d3                                
   4a98c:	6302           	blss 4a990 <_Heap_Extend+0xa8>              
   4a98e:	2a49           	moveal %a1,%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;                
   4a990:	70fe           	moveq #-2,%d0                               
   4a992:	c0a9 0004      	andl %a1@(4),%d0                            
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   4a996:	41f1 0800      	lea %a1@(00000000,%d0:l),%a0                
      link_above_block = end_block;                                   
    }                                                                 
                                                                      
    start_block = _Heap_Block_at( end_block, _Heap_Block_size( end_block ) );
  } while ( start_block != first_block );                             
   4a99a:	b888           	cmpl %a0,%d4                                
   4a99c:	66ae           	bnes 4a94c <_Heap_Extend+0x64>              
                                                                      
  if ( extend_area_begin < heap->area_begin ) {                       
   4a99e:	b6aa 0018      	cmpl %a2@(24),%d3                           
   4a9a2:	6406           	bccs 4a9aa <_Heap_Extend+0xc2>              
    heap->area_begin = extend_area_begin;                             
   4a9a4:	2543 0018      	movel %d3,%a2@(24)                          
   4a9a8:	600a           	bras 4a9b4 <_Heap_Extend+0xcc>              
  } else if ( heap->area_end < extend_area_end ) {                    
   4a9aa:	b4aa 001c      	cmpl %a2@(28),%d2                           
   4a9ae:	6304           	blss 4a9b4 <_Heap_Extend+0xcc>              
    heap->area_end = extend_area_end;                                 
   4a9b0:	2542 001c      	movel %d2,%a2@(28)                          
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
   4a9b4:	206e fffc      	moveal %fp@(-4),%a0                         
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
   4a9b8:	2008           	movel %a0,%d0                               
    (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;                   
   4a9ba:	7801           	moveq #1,%d4                                
  } 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;   
   4a9bc:	226e fff8      	moveal %fp@(-8),%a1                         
    heap->area_begin = extend_area_begin;                             
  } else if ( heap->area_end < extend_area_end ) {                    
    heap->area_end = extend_area_end;                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
   4a9c0:	9089           	subl %a1,%d0                                
    (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;                   
   4a9c2:	8880           	orl %d0,%d4                                 
  }                                                                   
                                                                      
  extend_first_block_size =                                           
    (uintptr_t) extend_last_block - (uintptr_t) extend_first_block;   
                                                                      
  extend_first_block->prev_size = extend_area_end;                    
   4a9c4:	2282           	movel %d2,%a1@                              
  extend_first_block->size_and_flag =                                 
    extend_first_block_size | HEAP_PREV_BLOCK_USED;                   
   4a9c6:	2344 0004      	movel %d4,%a1@(4)                           
  _Heap_Protection_block_initialize( heap, extend_first_block );      
                                                                      
  extend_last_block->prev_size = extend_first_block_size;             
   4a9ca:	2080           	movel %d0,%a0@                              
  extend_last_block->size_and_flag = 0;                               
   4a9cc:	42a8 0004      	clrl %a0@(4)                                
  _Heap_Protection_block_initialize( heap, extend_last_block );       
                                                                      
  if ( (uintptr_t) extend_first_block < (uintptr_t) heap->first_block ) {
   4a9d0:	b3ea 0020      	cmpal %a2@(32),%a1                          
   4a9d4:	6406           	bccs 4a9dc <_Heap_Extend+0xf4>              
    heap->first_block = extend_first_block;                           
   4a9d6:	2549 0020      	movel %a1,%a2@(32)                          
   4a9da:	600a           	bras 4a9e6 <_Heap_Extend+0xfe>              
  } else if ( (uintptr_t) extend_last_block > (uintptr_t) heap->last_block ) {
   4a9dc:	b1ea 0024      	cmpal %a2@(36),%a0                          
   4a9e0:	6304           	blss 4a9e6 <_Heap_Extend+0xfe>              
    heap->last_block = extend_last_block;                             
   4a9e2:	2548 0024      	movel %a0,%a2@(36)                          
  }                                                                   
                                                                      
  if ( merge_below_block != NULL ) {                                  
   4a9e6:	4a8c           	tstl %a4                                    
   4a9e8:	6732           	beqs 4aa1c <_Heap_Extend+0x134>             
  Heap_Control *heap,                                                 
  uintptr_t extend_area_begin,                                        
  Heap_Block *first_block                                             
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
   4a9ea:	202a 0010      	movel %a2@(16),%d0                          
  uintptr_t const new_first_block_alloc_begin =                       
    _Heap_Align_up( extend_area_begin + HEAP_BLOCK_HEADER_SIZE, page_size );
   4a9ee:	5083           	addql #8,%d3                                
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_up(                        
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  uintptr_t remainder = value % alignment;                            
   4a9f0:	2803           	movel %d3,%d4                               
   4a9f2:	4c40 4001      	remul %d0,%d1,%d4                           
                                                                      
  if ( remainder != 0 ) {                                             
   4a9f6:	4a81           	tstl %d1                                    
   4a9f8:	6704           	beqs 4a9fe <_Heap_Extend+0x116>             
    return value - remainder + alignment;                             
   4a9fa:	d680           	addl %d0,%d3                                
   4a9fc:	9681           	subl %d1,%d3                                
  uintptr_t const new_first_block_begin =                             
   4a9fe:	2043           	moveal %d3,%a0                              
   4aa00:	5188           	subql #8,%a0                                
    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 =                              
   4aa02:	200c           	movel %a4,%d0                               
   4aa04:	9088           	subl %a0,%d0                                
    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;
   4aa06:	7201           	moveq #1,%d1                                
   4aa08:	8280           	orl %d0,%d1                                 
  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;                
   4aa0a:	2094           	movel %a4@,%a0@                             
  new_first_block->size_and_flag = new_first_block_size | HEAP_PREV_BLOCK_USED;
   4aa0c:	2141 0004      	movel %d1,%a0@(4)                           
                                                                      
  _Heap_Free_block( heap, new_first_block );                          
   4aa10:	2f08           	movel %a0,%sp@-                             
   4aa12:	2f0a           	movel %a2,%sp@-                             
   4aa14:	4eba feb6      	jsr %pc@(4a8cc <_Heap_Free_block>)          
   4aa18:	508f           	addql #8,%sp                                
   4aa1a:	600e           	bras 4aa2a <_Heap_Extend+0x142>             
    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 ) {                            
   4aa1c:	4a81           	tstl %d1                                    
   4aa1e:	670a           	beqs 4aa2a <_Heap_Extend+0x142>             
{                                                                     
  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;           
   4aa20:	9288           	subl %a0,%d1                                
   4aa22:	7801           	moveq #1,%d4                                
   4aa24:	8881           	orl %d1,%d4                                 
   4aa26:	2144 0004      	movel %d4,%a0@(4)                           
      link_below_block,                                               
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
   4aa2a:	4a8b           	tstl %a3                                    
   4aa2c:	6734           	beqs 4aa62 <_Heap_Extend+0x17a>             
)                                                                     
{                                                                     
  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,      
   4aa2e:	5182           	subql #8,%d2                                
  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(             
   4aa30:	948b           	subl %a3,%d2                                
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
   4aa32:	2202           	movel %d2,%d1                               
   4aa34:	4c6a 1000 0010 	remul %a2@(16),%d0,%d1                      
  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;                                         
   4aa3a:	7201           	moveq #1,%d1                                
   4aa3c:	9480           	subl %d0,%d2                                
  );                                                                  
  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)                 
   4aa3e:	202b 0004      	movel %a3@(4),%d0                           
   4aa42:	9082           	subl %d2,%d0                                
      | HEAP_PREV_BLOCK_USED;                                         
   4aa44:	8280           	orl %d0,%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;       
   4aa46:	7001           	moveq #1,%d0                                
   4aa48:	2781 2804      	movel %d1,%a3@(00000004,%d2:l)              
   4aa4c:	c0ab 0004      	andl %a3@(4),%d0                            
                                                                      
  block->size_and_flag = size | flag;                                 
   4aa50:	8480           	orl %d0,%d2                                 
   4aa52:	2742 0004      	movel %d2,%a3@(4)                           
                                                                      
  _Heap_Block_set_size( last_block, last_block_new_size );            
                                                                      
  _Heap_Free_block( heap, last_block );                               
   4aa56:	2f0b           	movel %a3,%sp@-                             
   4aa58:	2f0a           	movel %a2,%sp@-                             
   4aa5a:	4eba fe70      	jsr %pc@(4a8cc <_Heap_Free_block>)          
   4aa5e:	508f           	addql #8,%sp                                
   4aa60:	6020           	bras 4aa82 <_Heap_Extend+0x19a>             
    );                                                                
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
   4aa62:	4a8d           	tstl %a5                                    
   4aa64:	671c           	beqs 4aa82 <_Heap_Extend+0x19a>             
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;       
   4aa66:	7201           	moveq #1,%d1                                
  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;                  
   4aa68:	7801           	moveq #1,%d4                                
)                                                                     
{                                                                     
  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 );       
   4aa6a:	202e fff8      	movel %fp@(-8),%d0                          
   4aa6e:	908d           	subl %a5,%d0                                
   4aa70:	c2ad 0004      	andl %a5@(4),%d1                            
  }                                                                   
                                                                      
  if ( merge_above_block != NULL ) {                                  
    _Heap_Merge_above( heap, merge_above_block, extend_area_end );    
  } else if ( link_above_block != NULL ) {                            
    _Heap_Link_above(                                                 
   4aa74:	206e fffc      	moveal %fp@(-4),%a0                         
                                                                      
  block->size_and_flag = size | flag;                                 
   4aa78:	8280           	orl %d0,%d1                                 
   4aa7a:	2b41 0004      	movel %d1,%a5@(4)                           
  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;                  
   4aa7e:	89a8 0004      	orl %d4,%a0@(4)                             
      extend_first_block,                                             
      extend_last_block                                               
    );                                                                
  }                                                                   
                                                                      
  if ( merge_below_block == NULL && merge_above_block == NULL ) {     
   4aa82:	4a8c           	tstl %a4                                    
   4aa84:	6610           	bnes 4aa96 <_Heap_Extend+0x1ae>             
   4aa86:	4a8b           	tstl %a3                                    
   4aa88:	660c           	bnes 4aa96 <_Heap_Extend+0x1ae>             
    _Heap_Free_block( heap, extend_first_block );                     
   4aa8a:	2f2e fff8      	movel %fp@(-8),%sp@-                        
   4aa8e:	2f0a           	movel %a2,%sp@-                             
   4aa90:	4eba fe3a      	jsr %pc@(4a8cc <_Heap_Free_block>)          
   4aa94:	508f           	addql #8,%sp                                
 */                                                                   
RTEMS_INLINE_ROUTINE void _Heap_Set_last_block_size( Heap_Control *heap )
{                                                                     
  _Heap_Block_set_size(                                               
    heap->last_block,                                                 
    (uintptr_t) heap->first_block - (uintptr_t) heap->last_block      
   4aa96:	206a 0024      	moveal %a2@(36),%a0                         
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;       
   4aa9a:	7201           	moveq #1,%d1                                
 * 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(                                               
   4aa9c:	202a 0020      	movel %a2@(32),%d0                          
   4aaa0:	9088           	subl %a0,%d0                                
RTEMS_INLINE_ROUTINE void _Heap_Block_set_size(                       
  Heap_Block *block,                                                  
  uintptr_t size                                                      
)                                                                     
{                                                                     
  uintptr_t flag = block->size_and_flag & HEAP_PREV_BLOCK_USED;       
   4aaa2:	c2a8 0004      	andl %a0@(4),%d1                            
                                                                      
  block->size_and_flag = size | flag;                                 
   4aaa6:	8280           	orl %d0,%d1                                 
   4aaa8:	2141 0004      	movel %d1,%a0@(4)                           
  }                                                                   
                                                                      
  _Heap_Set_last_block_size( heap );                                  
                                                                      
  extended_size = stats->free_size - free_size;                       
   4aaac:	202a 0030      	movel %a2@(48),%d0                          
   4aab0:	90ae fff4      	subl %fp@(-12),%d0                          
                                                                      
  /* Statistics */                                                    
  stats->size += extended_size;                                       
   4aab4:	d1aa 002c      	addl %d0,%a2@(44)                           
                                                                      
  if ( extended_size_ptr != NULL )                                    
   4aab8:	4aae 0014      	tstl %fp@(20)                               
   4aabc:	670c           	beqs 4aaca <_Heap_Extend+0x1e2>             <== NEVER TAKEN
    *extended_size_ptr = extended_size;                               
   4aabe:	206e 0014      	moveal %fp@(20),%a0                         
   4aac2:	2080           	movel %d0,%a0@                              
   4aac4:	6004           	bras 4aaca <_Heap_Extend+0x1e2>             
      _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;                                                   
   4aac6:	4200           	clrb %d0                                    
   4aac8:	6002           	bras 4aacc <_Heap_Extend+0x1e4>             
  stats->size += extended_size;                                       
                                                                      
  if ( extended_size_ptr != NULL )                                    
    *extended_size_ptr = extended_size;                               
                                                                      
  return true;                                                        
   4aaca:	7001           	moveq #1,%d0                                
}                                                                     
   4aacc:	4cee 3cfc ffcc 	moveml %fp@(-52),%d2-%d7/%a2-%a5            
   4aad2:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004a898 <_Heap_Free>: return do_free; } #endif bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr ) {
   4a898:	4e56 ffe8      	linkw %fp,#-24                              
   4a89c:	206e 0008      	moveal %fp@(8),%a0                          
   4a8a0:	48d7 0c3c      	moveml %d2-%d5/%a2-%a3,%sp@                 
   4a8a4:	202e 000c      	movel %fp@(12),%d0                          
  /*                                                                  
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
   4a8a8:	6700 014e      	beqw 4a9f8 <_Heap_Free+0x160>               
   4a8ac:	2240           	moveal %d0,%a1                              
   4a8ae:	5189           	subql #8,%a1                                
   4a8b0:	4c68 0001 0010 	remul %a0@(16),%d1,%d0                      
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           
   4a8b6:	2828 0020      	movel %a0@(32),%d4                          
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
   4a8ba:	93c1           	subal %d1,%a1                               
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
   4a8bc:	b889           	cmpl %a1,%d4                                
   4a8be:	620c           	bhis 4a8cc <_Heap_Free+0x34>                
   4a8c0:	b3e8 0024      	cmpal %a0@(36),%a1                          
   4a8c4:	53c0           	sls %d0                                     
   4a8c6:	49c0           	extbl %d0                                   
   4a8c8:	4480           	negl %d0                                    
   4a8ca:	6002           	bras 4a8ce <_Heap_Free+0x36>                
   4a8cc:	4280           	clrl %d0                                    
  }                                                                   
                                                                      
  alloc_begin = (uintptr_t) alloc_begin_ptr;                          
  block = _Heap_Block_of_alloc_area( alloc_begin, heap->page_size );  
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
   4a8ce:	4a00           	tstb %d0                                    
   4a8d0:	6700 012a      	beqw 4a9fc <_Heap_Free+0x164>               
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
   4a8d4:	2629 0004      	movel %a1@(4),%d3                           
    - HEAP_BLOCK_HEADER_SIZE);                                        
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Block_size( const Heap_Block *block )
{                                                                     
  return block->size_and_flag & ~HEAP_PREV_BLOCK_USED;                
   4a8d8:	70fe           	moveq #-2,%d0                               
   4a8da:	c083           	andl %d3,%d0                                
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   4a8dc:	45f1 0800      	lea %a1@(00000000,%d0:l),%a2                
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
   4a8e0:	b88a           	cmpl %a2,%d4                                
   4a8e2:	620c           	bhis 4a8f0 <_Heap_Free+0x58>                <== NEVER TAKEN
   4a8e4:	b5e8 0024      	cmpal %a0@(36),%a2                          
   4a8e8:	53c1           	sls %d1                                     
   4a8ea:	49c1           	extbl %d1                                   
   4a8ec:	4481           	negl %d1                                    
   4a8ee:	6002           	bras 4a8f2 <_Heap_Free+0x5a>                
   4a8f0:	4281           	clrl %d1                                    <== NOT EXECUTED
  _Heap_Protection_block_check( heap, block );                        
                                                                      
  block_size = _Heap_Block_size( block );                             
  next_block = _Heap_Block_at( block, block_size );                   
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {                
   4a8f2:	4a01           	tstb %d1                                    
   4a8f4:	6700 0106      	beqw 4a9fc <_Heap_Free+0x164>               
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
   4a8f8:	242a 0004      	movel %a2@(4),%d2                           
    return false;                                                     
  }                                                                   
                                                                      
  _Heap_Protection_block_check( heap, next_block );                   
                                                                      
  if ( !_Heap_Is_prev_used( next_block ) ) {                          
   4a8fc:	0802 0000      	btst #0,%d2                                 
   4a900:	6700 00fa      	beqw 4a9fc <_Heap_Free+0x164>               
    - 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;                
   4a904:	72fe           	moveq #-2,%d1                               
  if ( !_Heap_Protection_determine_block_free( heap, block ) ) {      
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
   4a906:	2668 0024      	moveal %a0@(36),%a3                         
   4a90a:	c481           	andl %d1,%d2                                
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
   4a90c:	b7ca           	cmpal %a2,%a3                               
   4a90e:	670c           	beqs 4a91c <_Heap_Free+0x84>                
  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;                 
   4a910:	7201           	moveq #1,%d1                                
   4a912:	c2b2 2804      	andl %a2@(00000004,%d2:l),%d1               
                                                                      
    return do_free;                                                   
  }                                                                   
#endif                                                                
                                                                      
bool _Heap_Free( Heap_Control *heap, void *alloc_begin_ptr )          
   4a916:	5381           	subql #1,%d1                                
   4a918:	4481           	negl %d1                                    
   4a91a:	6002           	bras 4a91e <_Heap_Free+0x86>                
    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 ));
   4a91c:	4281           	clrl %d1                                    
  if ( !_Heap_Protection_determine_block_free( heap, block ) ) {      
    return true;                                                      
  }                                                                   
                                                                      
  next_block_size = _Heap_Block_size( next_block );                   
  next_is_free = next_block != heap->last_block                       
   4a91e:	1a01           	moveb %d1,%d5                               
    && !_Heap_Is_prev_used( _Heap_Block_at( next_block, next_block_size ));
                                                                      
  if ( !_Heap_Is_prev_used( block ) ) {                               
   4a920:	0803 0000      	btst #0,%d3                                 
   4a924:	6660           	bnes 4a986 <_Heap_Free+0xee>                
    uintptr_t const prev_size = block->prev_size;                     
   4a926:	2611           	movel %a1@,%d3                              
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   4a928:	93c3           	subal %d3,%a1                               
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
    && (uintptr_t) block <= (uintptr_t) heap->last_block;             
   4a92a:	b889           	cmpl %a1,%d4                                
   4a92c:	620a           	bhis 4a938 <_Heap_Free+0xa0>                <== NEVER TAKEN
   4a92e:	b3cb           	cmpal %a3,%a1                               
   4a930:	53c1           	sls %d1                                     
   4a932:	49c1           	extbl %d1                                   
   4a934:	4481           	negl %d1                                    
   4a936:	6002           	bras 4a93a <_Heap_Free+0xa2>                
   4a938:	4281           	clrl %d1                                    <== NOT EXECUTED
    Heap_Block * const prev_block = _Heap_Block_at( block, -prev_size );
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, prev_block ) ) {              
   4a93a:	4a01           	tstb %d1                                    
   4a93c:	6700 00be      	beqw 4a9fc <_Heap_Free+0x164>               
  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;                 
   4a940:	7201           	moveq #1,%d1                                
   4a942:	c2a9 0004      	andl %a1@(4),%d1                            
      return( false );                                                
    }                                                                 
                                                                      
    /* As we always coalesce free blocks, the block that preceedes prev_block
       must have been used. */                                        
    if ( !_Heap_Is_prev_used ( prev_block) ) {                        
   4a946:	6700 00b4      	beqw 4a9fc <_Heap_Free+0x164>               
   4a94a:	d680           	addl %d0,%d3                                
      _HAssert( false );                                              
      return( false );                                                
    }                                                                 
                                                                      
    if ( next_is_free ) {       /* coalesce both */                   
   4a94c:	4a05           	tstb %d5                                    
   4a94e:	6724           	beqs 4a974 <_Heap_Free+0xdc>                
  return _Heap_Free_list_tail(heap)->prev;                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE void _Heap_Free_list_remove( Heap_Block *block ) 
{                                                                     
  Heap_Block *next = block->next;                                     
   4a950:	266a 0008      	moveal %a2@(8),%a3                          
      uintptr_t const size = block_size + prev_size + next_block_size;
   4a954:	d483           	addl %d3,%d2                                
      _Heap_Free_list_remove( next_block );                           
      stats->free_blocks -= 1;                                        
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
   4a956:	7201           	moveq #1,%d1                                
  Heap_Block *prev = block->prev;                                     
   4a958:	246a 000c      	moveal %a2@(12),%a2                         
                                                                      
  prev->next = next;                                                  
   4a95c:	254b 0008      	movel %a3,%a2@(8)                           
   4a960:	8282           	orl %d2,%d1                                 
  next->prev = prev;                                                  
   4a962:	274a 000c      	movel %a2,%a3@(12)                          
    }                                                                 
                                                                      
    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;                                        
   4a966:	53a8 0038      	subql #1,%a0@(56)                           
      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;                                   
   4a96a:	2382 2800      	movel %d2,%a1@(00000000,%d2:l)              
                                                                      
    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;        
   4a96e:	2341 0004      	movel %d1,%a1@(4)                           
   4a972:	6078           	bras 4a9ec <_Heap_Free+0x154>               
      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;        
   4a974:	7401           	moveq #1,%d2                                
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
   4a976:	72fe           	moveq #-2,%d1                               
      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;        
   4a978:	8483           	orl %d3,%d2                                 
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
      next_block->prev_size = size;                                   
   4a97a:	2483           	movel %d3,%a2@                              
      next_block = _Heap_Block_at( prev_block, size );                
      _HAssert(!_Heap_Is_prev_used( next_block));                     
      next_block->prev_size = size;                                   
    } else {                      /* coalesce prev */                 
      uintptr_t const size = block_size + prev_size;                  
      prev_block->size_and_flag = size | HEAP_PREV_BLOCK_USED;        
   4a97c:	2342 0004      	movel %d2,%a1@(4)                           
      next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;             
   4a980:	c3aa 0004      	andl %d1,%a2@(4)                            
   4a984:	6066           	bras 4a9ec <_Heap_Free+0x154>               
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
   4a986:	4a01           	tstb %d1                                    
   4a988:	672a           	beqs 4a9b4 <_Heap_Free+0x11c>               
RTEMS_INLINE_ROUTINE void _Heap_Free_list_replace(                    
  Heap_Block *old_block,                                              
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = old_block->next;                                 
   4a98a:	266a 0008      	moveal %a2@(8),%a3                          
    uintptr_t const size = block_size + next_block_size;              
   4a98e:	2202           	movel %d2,%d1                               
   4a990:	d280           	addl %d0,%d1                                
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
   4a992:	7401           	moveq #1,%d2                                
  Heap_Block *prev = old_block->prev;                                 
   4a994:	246a 000c      	moveal %a2@(12),%a2                         
                                                                      
  new_block->next = next;                                             
   4a998:	234b 0008      	movel %a3,%a1@(8)                           
   4a99c:	8481           	orl %d1,%d2                                 
  new_block->prev = prev;                                             
   4a99e:	234a 000c      	movel %a2,%a1@(12)                          
    next_block  = _Heap_Block_at( block, size );                      
    next_block->prev_size = size;                                     
   4a9a2:	2381 1800      	movel %d1,%a1@(00000000,%d1:l)              
                                                                      
  next->prev = new_block;                                             
   4a9a6:	2749 000c      	movel %a1,%a3@(12)                          
  prev->next = new_block;                                             
   4a9aa:	2549 0008      	movel %a1,%a2@(8)                           
      next_block->prev_size = size;                                   
    }                                                                 
  } else if ( next_is_free ) {    /* coalesce next */                 
    uintptr_t const size = block_size + next_block_size;              
    _Heap_Free_list_replace( next_block, block );                     
    block->size_and_flag = size | HEAP_PREV_BLOCK_USED;               
   4a9ae:	2342 0004      	movel %d2,%a1@(4)                           
   4a9b2:	6038           	bras 4a9ec <_Heap_Free+0x154>               
    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;         
   4a9b4:	7201           	moveq #1,%d1                                
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
   4a9b6:	74fe           	moveq #-2,%d2                               
    next_block->prev_size = size;                                     
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
   4a9b8:	8280           	orl %d0,%d1                                 
RTEMS_INLINE_ROUTINE void _Heap_Free_list_insert_after(               
  Heap_Block *block_before,                                           
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
   4a9ba:	2668 0008      	moveal %a0@(8),%a3                          
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
   4a9be:	2348 000c      	movel %a0,%a1@(12)                          
   4a9c2:	2341 0004      	movel %d1,%a1@(4)                           
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
    next_block->prev_size = block_size;                               
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
   4a9c6:	2228 0038      	movel %a0@(56),%d1                          
   4a9ca:	5281           	addql #1,%d1                                
  Heap_Block *new_block                                               
)                                                                     
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
   4a9cc:	234b 0008      	movel %a3,%a1@(8)                           
  } else {                        /* no coalesce */                   
    /* Add 'block' to the head of the free blocks list as it tends to 
       produce less fragmentation than adding to the tail. */         
    _Heap_Free_list_insert_after( _Heap_Free_list_head( heap), block );
    block->size_and_flag = block_size | HEAP_PREV_BLOCK_USED;         
    next_block->size_and_flag &= ~HEAP_PREV_BLOCK_USED;               
   4a9d0:	c5aa 0004      	andl %d2,%a2@(4)                            
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
  next->prev = new_block;                                             
   4a9d4:	2749 000c      	movel %a1,%a3@(12)                          
    next_block->prev_size = block_size;                               
   4a9d8:	2480           	movel %d0,%a2@                              
{                                                                     
  Heap_Block *next = block_before->next;                              
                                                                      
  new_block->next = next;                                             
  new_block->prev = block_before;                                     
  block_before->next = new_block;                                     
   4a9da:	2149 0008      	movel %a1,%a0@(8)                           
                                                                      
    /* Statistics */                                                  
    ++stats->free_blocks;                                             
   4a9de:	2141 0038      	movel %d1,%a0@(56)                          
    if ( stats->max_free_blocks < stats->free_blocks ) {              
   4a9e2:	b2a8 003c      	cmpl %a0@(60),%d1                           
   4a9e6:	6304           	blss 4a9ec <_Heap_Free+0x154>               
      stats->max_free_blocks = stats->free_blocks;                    
   4a9e8:	2141 003c      	movel %d1,%a0@(60)                          
    }                                                                 
  }                                                                   
                                                                      
  /* Statistics */                                                    
  --stats->used_blocks;                                               
   4a9ec:	53a8 0040      	subql #1,%a0@(64)                           
  ++stats->frees;                                                     
   4a9f0:	52a8 0050      	addql #1,%a0@(80)                           
  stats->free_size += block_size;                                     
   4a9f4:	d1a8 0030      	addl %d0,%a0@(48)                           
   * If NULL return true so a free on NULL is considered a valid release. This
   * is a special case that could be handled by the in heap check how-ever that
   * would result in false being returned which is wrong.             
   */                                                                 
  if ( alloc_begin_ptr == NULL ) {                                    
    return true;                                                      
   4a9f8:	7001           	moveq #1,%d0                                
   4a9fa:	6002           	bras 4a9fe <_Heap_Free+0x166>               
                                                                      
    /* 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 );                                                
   4a9fc:	4200           	clrb %d0                                    
  --stats->used_blocks;                                               
  ++stats->frees;                                                     
  stats->free_size += block_size;                                     
                                                                      
  return( true );                                                     
}                                                                     
   4a9fe:	4cd7 0c3c      	moveml %sp@,%d2-%d5/%a2-%a3                 
   4aa02:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0005a070 <_Heap_Size_of_alloc_area>: bool _Heap_Size_of_alloc_area( Heap_Control *heap, void *alloc_begin_ptr, uintptr_t *alloc_size ) {
   5a070:	4e56 0000      	linkw %fp,#0                                
   5a074:	202e 000c      	movel %fp@(12),%d0                          
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Align_down(                      
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return value - (value % alignment);                                 
   5a078:	2040           	moveal %d0,%a0                              
   5a07a:	5188           	subql #8,%a0                                
   5a07c:	226e 0008      	moveal %fp@(8),%a1                          
   5a080:	2f02           	movel %d2,%sp@-                             
   5a082:	2400           	movel %d0,%d2                               
   5a084:	4c69 2001 0010 	remul %a1@(16),%d1,%d2                      
RTEMS_INLINE_ROUTINE bool _Heap_Is_block_in_heap(                     
  const Heap_Control *heap,                                           
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block >= (uintptr_t) heap->first_block           
   5a08a:	2429 0020      	movel %a1@(32),%d2                          
  uintptr_t alloc_begin,                                              
  uintptr_t page_size                                                 
)                                                                     
{                                                                     
  return (Heap_Block *) (_Heap_Align_down( alloc_begin, page_size )   
    - HEAP_BLOCK_HEADER_SIZE);                                        
   5a08e:	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;             
   5a090:	b488           	cmpl %a0,%d2                                
   5a092:	620c           	bhis 5a0a0 <_Heap_Size_of_alloc_area+0x30>  
   5a094:	b1e9 0024      	cmpal %a1@(36),%a0                          
   5a098:	53c1           	sls %d1                                     
   5a09a:	49c1           	extbl %d1                                   
   5a09c:	4481           	negl %d1                                    
   5a09e:	6002           	bras 5a0a2 <_Heap_Size_of_alloc_area+0x32>  
   5a0a0:	4281           	clrl %d1                                    
  uintptr_t const alloc_begin = (uintptr_t) alloc_begin_ptr;          
  Heap_Block *block = _Heap_Block_of_alloc_area( alloc_begin, page_size );
  Heap_Block *next_block = NULL;                                      
  uintptr_t block_size = 0;                                           
                                                                      
  if ( !_Heap_Is_block_in_heap( heap, block ) ) {                     
   5a0a2:	4a01           	tstb %d1                                    
   5a0a4:	673a           	beqs 5a0e0 <_Heap_Size_of_alloc_area+0x70>  
    - 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;                
   5a0a6:	72fe           	moveq #-2,%d1                               
   5a0a8:	c2a8 0004      	andl %a0@(4),%d1                            
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   5a0ac:	41f0 1800      	lea %a0@(00000000,%d1:l),%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;             
   5a0b0:	b488           	cmpl %a0,%d2                                
   5a0b2:	620c           	bhis 5a0c0 <_Heap_Size_of_alloc_area+0x50>  <== NEVER TAKEN
   5a0b4:	b1e9 0024      	cmpal %a1@(36),%a0                          
   5a0b8:	53c1           	sls %d1                                     
   5a0ba:	49c1           	extbl %d1                                   
   5a0bc:	4481           	negl %d1                                    
   5a0be:	6002           	bras 5a0c2 <_Heap_Size_of_alloc_area+0x52>  
   5a0c0:	4281           	clrl %d1                                    <== NOT EXECUTED
  }                                                                   
                                                                      
  block_size = _Heap_Block_size( block );                             
  next_block = _Heap_Block_at( block, block_size );                   
                                                                      
  if (                                                                
   5a0c2:	4a01           	tstb %d1                                    
   5a0c4:	671a           	beqs 5a0e0 <_Heap_Size_of_alloc_area+0x70>  <== 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;                 
   5a0c6:	7201           	moveq #1,%d1                                
   5a0c8:	c2a8 0004      	andl %a0@(4),%d1                            
    !_Heap_Is_block_in_heap( heap, next_block )                       
      || !_Heap_Is_prev_used( next_block )                            
   5a0cc:	6712           	beqs 5a0e0 <_Heap_Size_of_alloc_area+0x70>  <== NEVER TAKEN
  ) {                                                                 
    return false;                                                     
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
   5a0ce:	7204           	moveq #4,%d1                                
   5a0d0:	9280           	subl %d0,%d1                                
   5a0d2:	2001           	movel %d1,%d0                               
   5a0d4:	d088           	addl %a0,%d0                                
   5a0d6:	226e 0010      	moveal %fp@(16),%a1                         
   5a0da:	2280           	movel %d0,%a1@                              
                                                                      
  return true;                                                        
   5a0dc:	7001           	moveq #1,%d0                                
   5a0de:	6002           	bras 5a0e2 <_Heap_Size_of_alloc_area+0x72>  
                                                                      
  if (                                                                
    !_Heap_Is_block_in_heap( heap, next_block )                       
      || !_Heap_Is_prev_used( next_block )                            
  ) {                                                                 
    return false;                                                     
   5a0e0:	4200           	clrb %d0                                    
  }                                                                   
                                                                      
  *alloc_size = (uintptr_t) next_block + HEAP_ALLOC_BONUS - alloc_begin;
                                                                      
  return true;                                                        
}                                                                     
   5a0e2:	241f           	movel %sp@+,%d2                             
   5a0e4:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

000473be <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) {
   473be:	4e56 ffd0      	linkw %fp,#-48                              
   473c2:	48d7 3cfc      	moveml %d2-%d7/%a2-%a5,%sp@                 
   473c6:	266e 0008      	moveal %fp@(8),%a3                          
  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;                      
   473ca:	45fa ffac      	lea %pc@(47378 <_Heap_Walk_print_nothing>),%a2
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
   473ce:	242e 000c      	movel %fp@(12),%d2                          
  uintptr_t const page_size = heap->page_size;                        
   473d2:	282b 0010      	movel %a3@(16),%d4                          
  uintptr_t const min_block_size = heap->min_block_size;              
   473d6:	2a2b 0014      	movel %a3@(20),%d5                          
  Heap_Block *const first_block = heap->first_block;                  
   473da:	2c2b 0020      	movel %a3@(32),%d6                          
  Heap_Block *const last_block = heap->last_block;                    
   473de:	2e2b 0024      	movel %a3@(36),%d7                          
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
   473e2:	4a2e 0013      	tstb %fp@(19)                               
   473e6:	6704           	beqs 473ec <_Heap_Walk+0x2e>                
   473e8:	45fa ff96      	lea %pc@(47380 <_Heap_Walk_print>),%a2      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
   473ec:	7003           	moveq #3,%d0                                
   473ee:	b0b9 0005 fae0 	cmpl 5fae0 <_System_state_Current>,%d0      
   473f4:	6600 02fc      	bnew 476f2 <_Heap_Walk+0x334>               
  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)(                                                         
   473f8:	2f2b 000c      	movel %a3@(12),%sp@-                        
   473fc:	2f2b 0008      	movel %a3@(8),%sp@-                         
   47400:	2f07           	movel %d7,%sp@-                             
   47402:	2f06           	movel %d6,%sp@-                             
   47404:	2f2b 001c      	movel %a3@(28),%sp@-                        
   47408:	2f2b 0018      	movel %a3@(24),%sp@-                        
   4740c:	2f05           	movel %d5,%sp@-                             
   4740e:	2f04           	movel %d4,%sp@-                             
   47410:	4879 0005 bfa7 	pea 5bfa7 <_Status_Object_name_errors_to_status+0x5d>
   47416:	42a7           	clrl %sp@-                                  
   47418:	2f02           	movel %d2,%sp@-                             
   4741a:	4e92           	jsr %a2@                                    
    heap->area_begin, heap->area_end,                                 
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
   4741c:	4fef 002c      	lea %sp@(44),%sp                            
   47420:	4a84           	tstl %d4                                    
   47422:	6608           	bnes 4742c <_Heap_Walk+0x6e>                
    (*printer)( source, true, "page size is zero\n" );                
   47424:	4879 0005 c038 	pea 5c038 <_Status_Object_name_errors_to_status+0xee>
   4742a:	606c           	bras 47498 <_Heap_Walk+0xda>                
)                                                                     
{                                                                     
#if (CPU_ALIGNMENT == 0)                                              
    return true;                                                      
#else                                                                 
    return (((uintptr_t)address % CPU_ALIGNMENT) == 0);               
   4742c:	7003           	moveq #3,%d0                                
   4742e:	c084           	andl %d4,%d0                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
   47430:	670c           	beqs 4743e <_Heap_Walk+0x80>                
    (*printer)(                                                       
   47432:	2f04           	movel %d4,%sp@-                             
   47434:	4879 0005 c04b 	pea 5c04b <_Status_Object_name_errors_to_status+0x101>
   4743a:	6000 02ca      	braw 47706 <_Heap_Walk+0x348>               
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
   4743e:	2205           	movel %d5,%d1                               
   47440:	4c44 1000      	remul %d4,%d0,%d1                           
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
   47444:	4a80           	tstl %d0                                    
   47446:	670c           	beqs 47454 <_Heap_Walk+0x96>                
    (*printer)(                                                       
   47448:	2f05           	movel %d5,%sp@-                             
   4744a:	4879 0005 c069 	pea 5c069 <_Status_Object_name_errors_to_status+0x11f>
   47450:	6000 02b4      	braw 47706 <_Heap_Walk+0x348>               
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
   47454:	2006           	movel %d6,%d0                               
   47456:	5080           	addql #8,%d0                                
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
   47458:	4c44 0001      	remul %d4,%d1,%d0                           
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
   4745c:	4a81           	tstl %d1                                    
   4745e:	670c           	beqs 4746c <_Heap_Walk+0xae>                
    !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
  ) {                                                                 
    (*printer)(                                                       
   47460:	2f06           	movel %d6,%sp@-                             
   47462:	4879 0005 c08d 	pea 5c08d <_Status_Object_name_errors_to_status+0x143>
   47468:	6000 029c      	braw 47706 <_Heap_Walk+0x348>               
  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;                 
   4746c:	7001           	moveq #1,%d0                                
   4746e:	2046           	moveal %d6,%a0                              
   47470:	c0a8 0004      	andl %a0@(4),%d0                            
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
   47474:	6608           	bnes 4747e <_Heap_Walk+0xc0>                
    (*printer)(                                                       
   47476:	4879 0005 c0be 	pea 5c0be <_Status_Object_name_errors_to_status+0x174>
   4747c:	601a           	bras 47498 <_Heap_Walk+0xda>                
    - 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;                
   4747e:	70fe           	moveq #-2,%d0                               
   47480:	2047           	moveal %d7,%a0                              
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   47482:	2847           	moveal %d7,%a4                              
    - 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;                
   47484:	c0a8 0004      	andl %a0@(4),%d0                            
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   47488:	d9c0           	addal %d0,%a4                               
  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;                 
   4748a:	7001           	moveq #1,%d0                                
   4748c:	c0ac 0004      	andl %a4@(4),%d0                            
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
   47490:	6616           	bnes 474a8 <_Heap_Walk+0xea>                
    (*printer)(                                                       
   47492:	4879 0005 c0ec 	pea 5c0ec <_Status_Object_name_errors_to_status+0x1a2>
   47498:	4878 0001      	pea 1 <ADD>                                 
   4749c:	2f02           	movel %d2,%sp@-                             
   4749e:	4e92           	jsr %a2@                                    
   474a0:	4fef 000c      	lea %sp@(12),%sp                            
   474a4:	6000 009e      	braw 47544 <_Heap_Walk+0x186>               
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
   474a8:	bc8c           	cmpl %a4,%d6                                
   474aa:	6708           	beqs 474b4 <_Heap_Walk+0xf6>                
    _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
  ) {                                                                 
    (*printer)(                                                       
   474ac:	4879 0005 c101 	pea 5c101 <_Status_Object_name_errors_to_status+0x1b7>
   474b2:	60e4           	bras 47498 <_Heap_Walk+0xda>                
  int source,                                                         
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
   474b4:	262b 0010      	movel %a3@(16),%d3                          
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
   474b8:	220b           	movel %a3,%d1                               
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
   474ba:	206b 0008      	moveal %a3@(8),%a0                          
   474be:	2d44 fff8      	movel %d4,%fp@(-8)                          
   474c2:	2d43 fffc      	movel %d3,%fp@(-4)                          
   474c6:	6000 0088      	braw 47550 <_Heap_Walk+0x192>               
  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;             
   474ca:	b1eb 0020      	cmpal %a3@(32),%a0                          
   474ce:	650c           	bcss 474dc <_Heap_Walk+0x11e>               
   474d0:	b1eb 0024      	cmpal %a3@(36),%a0                          
   474d4:	53c0           	sls %d0                                     
   474d6:	49c0           	extbl %d0                                   
   474d8:	4480           	negl %d0                                    
   474da:	6002           	bras 474de <_Heap_Walk+0x120>               
   474dc:	4280           	clrl %d0                                    
  const Heap_Block *const first_free_block = _Heap_Free_list_first( heap );
  const Heap_Block *prev_block = free_list_tail;                      
  const Heap_Block *free_block = first_free_block;                    
                                                                      
  while ( free_block != free_list_tail ) {                            
    if ( !_Heap_Is_block_in_heap( heap, free_block ) ) {              
   474de:	4a00           	tstb %d0                                    
   474e0:	660c           	bnes 474ee <_Heap_Walk+0x130>               
      (*printer)(                                                     
   474e2:	2f08           	movel %a0,%sp@-                             
   474e4:	4879 0005 c130 	pea 5c130 <_Status_Object_name_errors_to_status+0x1e6>
   474ea:	6000 021a      	braw 47706 <_Heap_Walk+0x348>               
                                                                      
RTEMS_INLINE_ROUTINE uintptr_t _Heap_Alloc_area_of_block(             
  const Heap_Block *block                                             
)                                                                     
{                                                                     
  return (uintptr_t) block + HEAP_BLOCK_HEADER_SIZE;                  
   474ee:	4be8 0008      	lea %a0@(8),%a5                             
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
   474f2:	200d           	movel %a5,%d0                               
   474f4:	262e fffc      	movel %fp@(-4),%d3                          
   474f8:	4c43 0004      	remul %d3,%d4,%d0                           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
   474fc:	4a84           	tstl %d4                                    
   474fe:	670c           	beqs 4750c <_Heap_Walk+0x14e>               
      !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
    ) {                                                               
      (*printer)(                                                     
   47500:	2f08           	movel %a0,%sp@-                             
   47502:	4879 0005 c150 	pea 5c150 <_Status_Object_name_errors_to_status+0x206>
   47508:	6000 01fc      	braw 47706 <_Heap_Walk+0x348>               
    - 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;                
   4750c:	70fe           	moveq #-2,%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;                 
   4750e:	7601           	moveq #1,%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;                
   47510:	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;                 
   47514:	c6b0 0804      	andl %a0@(00000004,%d0:l),%d3               
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
   47518:	670c           	beqs 47526 <_Heap_Walk+0x168>               
      (*printer)(                                                     
   4751a:	2f08           	movel %a0,%sp@-                             
   4751c:	4879 0005 c180 	pea 5c180 <_Status_Object_name_errors_to_status+0x236>
   47522:	6000 01e2      	braw 47706 <_Heap_Walk+0x348>               
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( free_block->prev != prev_block ) {                           
   47526:	2028 000c      	movel %a0@(12),%d0                          
   4752a:	b280           	cmpl %d0,%d1                                
   4752c:	671c           	beqs 4754a <_Heap_Walk+0x18c>               
      (*printer)(                                                     
   4752e:	2f00           	movel %d0,%sp@-                             
   47530:	2f08           	movel %a0,%sp@-                             
   47532:	4879 0005 c19c 	pea 5c19c <_Status_Object_name_errors_to_status+0x252>
   47538:	4878 0001      	pea 1 <ADD>                                 
   4753c:	2f02           	movel %d2,%sp@-                             
   4753e:	4e92           	jsr %a2@                                    
   47540:	4fef 0014      	lea %sp@(20),%sp                            
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
   47544:	4200           	clrb %d0                                    
   47546:	6000 01ac      	braw 476f4 <_Heap_Walk+0x336>               
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    prev_block = free_block;                                          
    free_block = free_block->next;                                    
   4754a:	2208           	movel %a0,%d1                               
   4754c:	2068 0008      	moveal %a0@(8),%a0                          
  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 ) {                            
   47550:	b7c8           	cmpal %a0,%a3                               
   47552:	6600 ff76      	bnew 474ca <_Heap_Walk+0x10c>               
   47556:	282e fff8      	movel %fp@(-8),%d4                          
   4755a:	6002           	bras 4755e <_Heap_Walk+0x1a0>               
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
   4755c:	284d           	moveal %a5,%a4                              
                                                                      
  return true;                                                        
}                                                                     
   4755e:	202c 0004      	movel %a4@(4),%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;                
   47562:	76fe           	moveq #-2,%d3                               
   47564:	c680           	andl %d0,%d3                                
   47566:	2d40 fffc      	movel %d0,%fp@(-4)                          
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
   4756a:	4bf4 3800      	lea %a4@(00000000,%d3:l),%a5                
  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;             
   4756e:	bbeb 0020      	cmpal %a3@(32),%a5                          
   47572:	650c           	bcss 47580 <_Heap_Walk+0x1c2>               <== NEVER TAKEN
   47574:	bbeb 0024      	cmpal %a3@(36),%a5                          
   47578:	53c0           	sls %d0                                     
   4757a:	49c0           	extbl %d0                                   
   4757c:	4480           	negl %d0                                    
   4757e:	6002           	bras 47582 <_Heap_Walk+0x1c4>               
   47580:	4280           	clrl %d0                                    <== NOT EXECUTED
    bool const prev_used = _Heap_Is_prev_used( block );               
    Heap_Block *const next_block = _Heap_Block_at( block, block_size );
    uintptr_t const next_block_begin = (uintptr_t) next_block;        
    bool const is_not_last_block = block != last_block;               
                                                                      
    if ( !_Heap_Is_block_in_heap( heap, next_block ) ) {              
   47582:	4a00           	tstb %d0                                    
   47584:	660c           	bnes 47592 <_Heap_Walk+0x1d4>               
      (*printer)(                                                     
   47586:	2f0d           	movel %a5,%sp@-                             
   47588:	2f0c           	movel %a4,%sp@-                             
   4758a:	4879 0005 c1ce 	pea 5c1ce <_Status_Object_name_errors_to_status+0x284>
   47590:	60a6           	bras 47538 <_Heap_Walk+0x17a>               
    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;               
   47592:	be8c           	cmpl %a4,%d7                                
   47594:	56c0           	sne %d0                                     
   47596:	2200           	movel %d0,%d1                               
   47598:	4481           	negl %d1                                    
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
   4759a:	2003           	movel %d3,%d0                               
   4759c:	1d41 fffb      	moveb %d1,%fp@(-5)                          
   475a0:	4c44 0001      	remul %d4,%d1,%d0                           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
   475a4:	4a81           	tstl %d1                                    
   475a6:	6714           	beqs 475bc <_Heap_Walk+0x1fe>               
   475a8:	4a2e fffb      	tstb %fp@(-5)                               
   475ac:	670e           	beqs 475bc <_Heap_Walk+0x1fe>               
      (*printer)(                                                     
   475ae:	2f03           	movel %d3,%sp@-                             
   475b0:	2f0c           	movel %a4,%sp@-                             
   475b2:	4879 0005 c1fb 	pea 5c1fb <_Status_Object_name_errors_to_status+0x2b1>
   475b8:	6000 ff7e      	braw 47538 <_Heap_Walk+0x17a>               
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
   475bc:	ba83           	cmpl %d3,%d5                                
   475be:	6322           	blss 475e2 <_Heap_Walk+0x224>               
   475c0:	4a2e fffb      	tstb %fp@(-5)                               
   475c4:	671c           	beqs 475e2 <_Heap_Walk+0x224>               <== NEVER TAKEN
      (*printer)(                                                     
   475c6:	2f05           	movel %d5,%sp@-                             
   475c8:	2f03           	movel %d3,%sp@-                             
   475ca:	2f0c           	movel %a4,%sp@-                             
   475cc:	4879 0005 c229 	pea 5c229 <_Status_Object_name_errors_to_status+0x2df>
   475d2:	4878 0001      	pea 1 <ADD>                                 
   475d6:	2f02           	movel %d2,%sp@-                             
   475d8:	4e92           	jsr %a2@                                    
        block,                                                        
        block_size,                                                   
        min_block_size                                                
      );                                                              
                                                                      
      return false;                                                   
   475da:	4fef 0018      	lea %sp@(24),%sp                            
   475de:	6000 ff64      	braw 47544 <_Heap_Walk+0x186>               
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
   475e2:	b9cd           	cmpal %a5,%a4                               
   475e4:	6514           	bcss 475fa <_Heap_Walk+0x23c>               
   475e6:	4a2e fffb      	tstb %fp@(-5)                               
   475ea:	670e           	beqs 475fa <_Heap_Walk+0x23c>               
      (*printer)(                                                     
   475ec:	2f0d           	movel %a5,%sp@-                             
   475ee:	2f0c           	movel %a4,%sp@-                             
   475f0:	4879 0005 c254 	pea 5c254 <_Status_Object_name_errors_to_status+0x30a>
   475f6:	6000 ff40      	braw 47538 <_Heap_Walk+0x17a>               
  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;                 
   475fa:	7001           	moveq #1,%d0                                
   475fc:	c0ae fffc      	andl %fp@(-4),%d0                           
   47600:	2d40 fffc      	movel %d0,%fp@(-4)                          
   47604:	7001           	moveq #1,%d0                                
   47606:	c0ad 0004      	andl %a5@(4),%d0                            
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
   4760a:	6600 00ae      	bnew 476ba <_Heap_Walk+0x2fc>               
  return &heap->free_list;                                            
}                                                                     
                                                                      
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Free_list_first( Heap_Control *heap )
{                                                                     
  return _Heap_Free_list_head(heap)->next;                            
   4760e:	222b 0008      	movel %a3@(8),%d1                           
  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)(                                                         
   47612:	43f9 0005 bf74 	lea 5bf74 <_Status_Object_name_errors_to_status+0x2a>,%a1
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
   47618:	206c 0008      	moveal %a4@(8),%a0                          
   4761c:	2d41 fff8      	movel %d1,%fp@(-8)                          
  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)(                                                         
   47620:	b1eb 000c      	cmpal %a3@(12),%a0                          
   47624:	6710           	beqs 47636 <_Heap_Walk+0x278>               
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
   47626:	43f9 0005 bec0 	lea 5bec0 <rtems_filesystem_default_pathconf+0xb4>,%a1
   4762c:	b7c8           	cmpal %a0,%a3                               
   4762e:	6606           	bnes 47636 <_Heap_Walk+0x278>               
   47630:	43f9 0005 bf83 	lea 5bf83 <_Status_Object_name_errors_to_status+0x39>,%a1
    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 ?                                 
   47636:	202c 000c      	movel %a4@(12),%d0                          
  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)(                                                         
   4763a:	223c 0005 bf8d 	movel #376717,%d1                           
   47640:	b0ae fff8      	cmpl %fp@(-8),%d0                           
   47644:	6710           	beqs 47656 <_Heap_Walk+0x298>               
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
   47646:	223c 0005 bec0 	movel #376512,%d1                           
   4764c:	b7c0           	cmpal %d0,%a3                               
   4764e:	6606           	bnes 47656 <_Heap_Walk+0x298>               
   47650:	223c 0005 bf9d 	movel #376733,%d1                           
  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)(                                                         
   47656:	2f09           	movel %a1,%sp@-                             
   47658:	2f08           	movel %a0,%sp@-                             
   4765a:	2f01           	movel %d1,%sp@-                             
   4765c:	2f00           	movel %d0,%sp@-                             
   4765e:	2f03           	movel %d3,%sp@-                             
   47660:	2f0c           	movel %a4,%sp@-                             
   47662:	4879 0005 c288 	pea 5c288 <_Status_Object_name_errors_to_status+0x33e>
   47668:	42a7           	clrl %sp@-                                  
   4766a:	2f02           	movel %d2,%sp@-                             
   4766c:	4e92           	jsr %a2@                                    
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
   4766e:	2015           	movel %a5@,%d0                              
   47670:	4fef 0024      	lea %sp@(36),%sp                            
   47674:	b083           	cmpl %d3,%d0                                
   47676:	671e           	beqs 47696 <_Heap_Walk+0x2d8>               
    (*printer)(                                                       
   47678:	2f0d           	movel %a5,%sp@-                             
   4767a:	2f00           	movel %d0,%sp@-                             
   4767c:	2f03           	movel %d3,%sp@-                             
   4767e:	2f0c           	movel %a4,%sp@-                             
   47680:	4879 0005 c2bd 	pea 5c2bd <_Status_Object_name_errors_to_status+0x373>
   47686:	4878 0001      	pea 1 <ADD>                                 
   4768a:	2f02           	movel %d2,%sp@-                             
   4768c:	4e92           	jsr %a2@                                    
   4768e:	4fef 001c      	lea %sp@(28),%sp                            
   47692:	6000 feb0      	braw 47544 <_Heap_Walk+0x186>               
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
   47696:	4aae fffc      	tstl %fp@(-4)                               
   4769a:	660a           	bnes 476a6 <_Heap_Walk+0x2e8>               
    (*printer)(                                                       
   4769c:	2f0c           	movel %a4,%sp@-                             
   4769e:	4879 0005 c2f6 	pea 5c2f6 <_Status_Object_name_errors_to_status+0x3ac>
   476a4:	6060           	bras 47706 <_Heap_Walk+0x348>               
   476a6:	206b 0008      	moveal %a3@(8),%a0                          
   476aa:	6008           	bras 476b4 <_Heap_Walk+0x2f6>               
{                                                                     
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
  const Heap_Block *free_block = _Heap_Free_list_first( heap );       
                                                                      
  while ( free_block != free_list_tail ) {                            
    if ( free_block == block ) {                                      
   476ac:	b9c8           	cmpal %a0,%a4                               
   476ae:	673c           	beqs 476ec <_Heap_Walk+0x32e>               
      return true;                                                    
    }                                                                 
    free_block = free_block->next;                                    
   476b0:	2068 0008      	moveal %a0@(8),%a0                          
)                                                                     
{                                                                     
  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 ) {                            
   476b4:	b7c8           	cmpal %a0,%a3                               
   476b6:	66f4           	bnes 476ac <_Heap_Walk+0x2ee>               
   476b8:	6044           	bras 476fe <_Heap_Walk+0x340>               
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
   476ba:	4aae fffc      	tstl %fp@(-4)                               
   476be:	6716           	beqs 476d6 <_Heap_Walk+0x318>               
      (*printer)(                                                     
   476c0:	2f03           	movel %d3,%sp@-                             
   476c2:	2f0c           	movel %a4,%sp@-                             
   476c4:	4879 0005 c325 	pea 5c325 <_Status_Object_name_errors_to_status+0x3db>
   476ca:	42a7           	clrl %sp@-                                  
   476cc:	2f02           	movel %d2,%sp@-                             
   476ce:	4e92           	jsr %a2@                                    
   476d0:	4fef 0014      	lea %sp@(20),%sp                            
   476d4:	6016           	bras 476ec <_Heap_Walk+0x32e>               
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
   476d6:	2f14           	movel %a4@,%sp@-                            
   476d8:	2f03           	movel %d3,%sp@-                             
   476da:	2f0c           	movel %a4,%sp@-                             
   476dc:	4879 0005 c33c 	pea 5c33c <_Status_Object_name_errors_to_status+0x3f2>
   476e2:	42a7           	clrl %sp@-                                  
   476e4:	2f02           	movel %d2,%sp@-                             
   476e6:	4e92           	jsr %a2@                                    
   476e8:	4fef 0018      	lea %sp@(24),%sp                            
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
   476ec:	bc8d           	cmpl %a5,%d6                                
   476ee:	6600 fe6c      	bnew 4755c <_Heap_Walk+0x19e>               
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
   476f2:	7001           	moveq #1,%d0                                
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
   476f4:	4cee 3cfc ffd0 	moveml %fp@(-48),%d2-%d7/%a2-%a5            
   476fa:	4e5e           	unlk %fp                                    
   476fc:	4e75           	rts                                         
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {                 
    (*printer)(                                                       
   476fe:	2f0c           	movel %a4,%sp@-                             
   47700:	4879 0005 c361 	pea 5c361 <_Status_Object_name_errors_to_status+0x417>
   47706:	4878 0001      	pea 1 <ADD>                                 
   4770a:	2f02           	movel %d2,%sp@-                             
   4770c:	4e92           	jsr %a2@                                    
   4770e:	4fef 0010      	lea %sp@(16),%sp                            
   47712:	6000 fe30      	braw 47544 <_Heap_Walk+0x186>               
	...                                                                  
                                                                      

00046b84 <_Internal_error_Occurred>: void _Internal_error_Occurred( Internal_errors_Source the_source, bool is_internal, Internal_errors_t the_error ) {
   46b84:	4e56 0000      	linkw %fp,#0                                
   46b88:	222e 000c      	movel %fp@(12),%d1                          
   46b8c:	2f02           	movel %d2,%sp@-                             
   46b8e:	242e 0010      	movel %fp@(16),%d2                          
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
  _Internal_errors_What_happened.is_internal = is_internal;           
   46b92:	13c1 0005 d8c2 	moveb %d1,5d8c2 <_Internal_errors_What_happened+0x4>
  _Internal_errors_What_happened.the_error   = the_error;             
                                                                      
  _User_extensions_Fatal( the_source, is_internal, the_error );       
   46b98:	2f02           	movel %d2,%sp@-                             
void _Internal_error_Occurred(                                        
  Internal_errors_Source  the_source,                                 
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
   46b9a:	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 );       
   46b9e:	0281 0000 00ff 	andil #255,%d1                              
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
   46ba4:	23c0 0005 d8be 	movel %d0,5d8be <_Internal_errors_What_happened>
  _Internal_errors_What_happened.is_internal = is_internal;           
  _Internal_errors_What_happened.the_error   = the_error;             
                                                                      
  _User_extensions_Fatal( the_source, is_internal, the_error );       
   46baa:	2f01           	movel %d1,%sp@-                             
)                                                                     
{                                                                     
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
  _Internal_errors_What_happened.is_internal = is_internal;           
  _Internal_errors_What_happened.the_error   = the_error;             
   46bac:	23c2 0005 d8c4 	movel %d2,5d8c4 <_Internal_errors_What_happened+0x6>
                                                                      
  _User_extensions_Fatal( the_source, is_internal, the_error );       
   46bb2:	2f00           	movel %d0,%sp@-                             
   46bb4:	4eb9 0004 875a 	jsr 4875a <_User_extensions_Fatal>          
                                                                      
RTEMS_INLINE_ROUTINE void _System_state_Set (                         
  System_state_Codes state                                            
)                                                                     
{                                                                     
  _System_state_Current = state;                                      
   46bba:	7005           	moveq #5,%d0                                
                                                                      
  _System_state_Set( SYSTEM_STATE_FAILED );                           
                                                                      
  _CPU_Fatal_halt( the_error );                                       
   46bbc:	2042           	moveal %d2,%a0                              
   46bbe:	243c 0000 0700 	movel #1792,%d2                             
   46bc4:	23c0 0005 d968 	movel %d0,5d968 <_System_state_Current>     
   46bca:	40c0           	movew %sr,%d0                               
   46bcc:	8082           	orl %d2,%d0                                 
   46bce:	46c0           	movew %d0,%sr                               
   46bd0:	2008           	movel %a0,%d0                               <== NOT EXECUTED
   46bd2:	223c dead beef 	movel #-559038737,%d1                       <== NOT EXECUTED
   46bd8:	4ac8           	halt                                        <== NOT EXECUTED
   46bda:	4fef 000c      	lea %sp@(12),%sp                            
   46bde:	60fe           	bras 46bde <_Internal_error_Occurred+0x5a>  
                                                                      

00046c40 <_Objects_Allocate>: */ Objects_Control *_Objects_Allocate( Objects_Information *information ) {
   46c40:	4e56 fff0      	linkw %fp,#-16                              
   46c44:	48d7 0c0c      	moveml %d2-%d3/%a2-%a3,%sp@                 
   46c48:	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 )                                       
   46c4c:	4aaa 0014      	tstl %a2@(20)                               
   46c50:	675e           	beqs 46cb0 <_Objects_Allocate+0x70>         <== NEVER TAKEN
                                                                      
  /*                                                                  
   *  OK.  The manager should be initialized and configured to have objects.
   *  With any luck, it is safe to attempt to allocate an object.     
   */                                                                 
  the_object = (Objects_Control *) _Chain_Get( &information->Inactive );
   46c52:	240a           	movel %a2,%d2                               
   46c54:	0682 0000 001c 	addil #28,%d2                               
   46c5a:	47f9 0004 63bc 	lea 463bc <_Chain_Get>,%a3                  
   46c60:	2f02           	movel %d2,%sp@-                             
   46c62:	4e93           	jsr %a3@                                    
                                                                      
  if ( information->auto_extend ) {                                   
   46c64:	588f           	addql #4,%sp                                
   46c66:	4a2a 0010      	tstb %a2@(16)                               
   46c6a:	6746           	beqs 46cb2 <_Objects_Allocate+0x72>         
    /*                                                                
     *  If the list is empty then we are out of objects and need to   
     *  extend information base.                                      
     */                                                               
                                                                      
    if ( !the_object ) {                                              
   46c6c:	4a80           	tstl %d0                                    
   46c6e:	6612           	bnes 46c82 <_Objects_Allocate+0x42>         
      _Objects_Extend_information( information );                     
   46c70:	2f0a           	movel %a2,%sp@-                             
   46c72:	4eb9 0004 6ce4 	jsr 46ce4 <_Objects_Extend_information>     
      the_object =  (Objects_Control *) _Chain_Get( &information->Inactive );
   46c78:	2f02           	movel %d2,%sp@-                             
   46c7a:	4e93           	jsr %a3@                                    
    }                                                                 
                                                                      
    if ( the_object ) {                                               
   46c7c:	508f           	addql #8,%sp                                
   46c7e:	4a80           	tstl %d0                                    
   46c80:	6730           	beqs 46cb2 <_Objects_Allocate+0x72>         
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
   46c82:	2040           	moveal %d0,%a0                              
   46c84:	4281           	clrl %d1                                    
   46c86:	4282           	clrl %d2                                    
   46c88:	3228 000a      	movew %a0@(10),%d1                          
   46c8c:	342a 0008      	movew %a2@(8),%d2                           
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
                                                                      
      information->inactive_per_block[ block ]--;                     
   46c90:	206a 002a      	moveal %a2@(42),%a0                         
    }                                                                 
                                                                      
    if ( the_object ) {                                               
      uint32_t   block;                                               
                                                                      
      block = (uint32_t) _Objects_Get_index( the_object->id ) -       
   46c94:	9282           	subl %d2,%d1                                
              _Objects_Get_index( information->minimum_id );          
      block /= information->allocation_size;                          
   46c96:	342a 0012      	movew %a2@(18),%d2                          
   46c9a:	4c42 1001      	remul %d2,%d1,%d1                           
                                                                      
      information->inactive_per_block[ block ]--;                     
   46c9e:	e589           	lsll #2,%d1                                 
   46ca0:	d1c1           	addal %d1,%a0                               
   46ca2:	5390           	subql #1,%a0@                               
      information->inactive--;                                        
   46ca4:	322a 0028      	movew %a2@(40),%d1                          
   46ca8:	5381           	subql #1,%d1                                
   46caa:	3541 0028      	movew %d1,%a2@(40)                          
   46cae:	6002           	bras 46cb2 <_Objects_Allocate+0x72>         
   *  still attempts to create the object, the information block      
   *  should be all zeroed out because it is in the BSS.  So let's    
   *  check that code for this manager is even present.               
   */                                                                 
  if ( information->size == 0 )                                       
    return NULL;                                                      
   46cb0:	4280           	clrl %d0                                    <== NOT EXECUTED
    );                                                                
  }                                                                   
#endif                                                                
                                                                      
  return the_object;                                                  
}                                                                     
   46cb2:	4cee 0c0c fff0 	moveml %fp@(-16),%d2-%d3/%a2-%a3            
   46cb8:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00046cbc <_Objects_Close>: #if defined(RTEMS_DEBUG) if ( index > information->maximum ) return; #endif information->local_table[ index ] = the_object;
   46cbc:	4280           	clrl %d0                                    
                                                                      
void _Objects_Close(                                                  
  Objects_Information  *information,                                  
  Objects_Control      *the_object                                    
)                                                                     
{                                                                     
   46cbe:	4e56 0000      	linkw %fp,#0                                
   46cc2:	206e 0008      	moveal %fp@(8),%a0                          
   46cc6:	226e 000c      	moveal %fp@(12),%a1                         
   46cca:	2f0a           	movel %a2,%sp@-                             
   46ccc:	2468 0018      	moveal %a0@(24),%a2                         
   46cd0:	3029 000a      	movew %a1@(10),%d0                          
   46cd4:	42b2 0c00      	clrl %a2@(00000000,%d0:l:4)                 
  _Objects_Invalidate_Id( information, the_object );                  
                                                                      
  _Objects_Namespace_remove( information, the_object );               
}                                                                     
   46cd8:	245f           	moveal %sp@+,%a2                            
   46cda:	4e5e           	unlk %fp                                    
  Objects_Control      *the_object                                    
)                                                                     
{                                                                     
  _Objects_Invalidate_Id( information, the_object );                  
                                                                      
  _Objects_Namespace_remove( information, the_object );               
   46cdc:	4ef9 0004 71ec 	jmp 471ec <_Objects_Namespace_remove>       
	...                                                                  
                                                                      

00046fec <_Objects_Get_information>: Objects_Information *_Objects_Get_information( Objects_APIs the_api, uint16_t the_class ) {
   46fec:	4e56 0000      	linkw %fp,#0                                
   46ff0:	2f03           	movel %d3,%sp@-                             
   46ff2:	362e 000e      	movew %fp@(14),%d3                          
   46ff6:	2f02           	movel %d2,%sp@-                             
   46ff8:	242e 0008      	movel %fp@(8),%d2                           
  Objects_Information *info;                                          
  int the_class_api_maximum;                                          
                                                                      
  if ( !the_class )                                                   
   46ffc:	4a43           	tstw %d3                                    
   46ffe:	673a           	beqs 4703a <_Objects_Get_information+0x4e>  
                                                                      
  /*                                                                  
   *  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 );      
   47000:	2f02           	movel %d2,%sp@-                             
   47002:	4eb9 0004 aa08 	jsr 4aa08 <_Objects_API_maximum_class>      
  if ( the_class_api_maximum == 0 )                                   
   47008:	588f           	addql #4,%sp                                
   4700a:	4a80           	tstl %d0                                    
   4700c:	672c           	beqs 4703a <_Objects_Get_information+0x4e>  
    return NULL;                                                      
                                                                      
  if ( the_class > (uint32_t) the_class_api_maximum )                 
   4700e:	0283 0000 ffff 	andil #65535,%d3                            
   47014:	b083           	cmpl %d3,%d0                                
   47016:	6522           	bcss 4703a <_Objects_Get_information+0x4e>  
    return NULL;                                                      
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
   47018:	41f9 0005 d7e4 	lea 5d7e4 <_Objects_Information_table>,%a0  
   4701e:	2070 2c00      	moveal %a0@(00000000,%d2:l:4),%a0           
   47022:	4a88           	tstl %a0                                    
   47024:	6714           	beqs 4703a <_Objects_Get_information+0x4e>  <== NEVER TAKEN
    return NULL;                                                      
                                                                      
  info = _Objects_Information_table[ the_api ][ the_class ];          
   47026:	2030 3c00      	movel %a0@(00000000,%d3:l:4),%d0            
  if ( !info )                                                        
   4702a:	6710           	beqs 4703c <_Objects_Get_information+0x50>  <== NEVER TAKEN
   *  Thus we may have 0 local instances and still have a valid object
   *  pointer.                                                        
   */                                                                 
  #if !defined(RTEMS_MULTIPROCESSING)                                 
    if ( info->maximum == 0 )                                         
      return NULL;                                                    
   4702c:	2040           	moveal %d0,%a0                              
   4702e:	4a68 000e      	tstw %a0@(14)                               
   47032:	56c1           	sne %d1                                     
   47034:	49c1           	extbl %d1                                   
   47036:	c081           	andl %d1,%d0                                
   47038:	6002           	bras 4703c <_Objects_Get_information+0x50>  
                                                                      
  if ( the_class > (uint32_t) the_class_api_maximum )                 
    return NULL;                                                      
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
    return NULL;                                                      
   4703a:	4280           	clrl %d0                                    
    if ( info->maximum == 0 )                                         
      return NULL;                                                    
  #endif                                                              
                                                                      
  return info;                                                        
}                                                                     
   4703c:	242e fff8      	movel %fp@(-8),%d2                          
   47040:	262e fffc      	movel %fp@(-4),%d3                          
   47044:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00053ce0 <_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;
   53ce0:	7001           	moveq #1,%d0                                
                                                                      
  if ( information->maximum >= index ) {                              
   53ce2:	4281           	clrl %d1                                    
Objects_Control *_Objects_Get_no_protection(                          
  Objects_Information *information,                                   
  Objects_Id           id,                                            
  Objects_Locations   *location                                       
)                                                                     
{                                                                     
   53ce4:	4e56 0000      	linkw %fp,#0                                
   53ce8:	206e 0008      	moveal %fp@(8),%a0                          
                                                                      
  /*                                                                  
   * 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;                           
   53cec:	90a8 0006      	subl %a0@(6),%d0                            
   53cf0:	d0ae 000c      	addl %fp@(12),%d0                           
                                                                      
  if ( information->maximum >= index ) {                              
   53cf4:	3228 000e      	movew %a0@(14),%d1                          
Objects_Control *_Objects_Get_no_protection(                          
  Objects_Information *information,                                   
  Objects_Id           id,                                            
  Objects_Locations   *location                                       
)                                                                     
{                                                                     
   53cf8:	226e 0010      	moveal %fp@(16),%a1                         
   * 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 ) {                              
   53cfc:	b081           	cmpl %d1,%d0                                
   53cfe:	620e           	bhis 53d0e <_Objects_Get_no_protection+0x2e>
    if ( (the_object = information->local_table[ index ]) != NULL ) { 
   53d00:	2068 0018      	moveal %a0@(24),%a0                         
   53d04:	2030 0c00      	movel %a0@(00000000,%d0:l:4),%d0            
   53d08:	6704           	beqs 53d0e <_Objects_Get_no_protection+0x2e><== NEVER TAKEN
      *location = OBJECTS_LOCAL;                                      
   53d0a:	4291           	clrl %a1@                                   
      return the_object;                                              
   53d0c:	6006           	bras 53d14 <_Objects_Get_no_protection+0x34>
                                                                      
  /*                                                                  
   *  This isn't supported or required yet for Global objects so      
   *  if it isn't local, we don't find it.                            
   */                                                                 
  *location = OBJECTS_ERROR;                                          
   53d0e:	7001           	moveq #1,%d0                                
   53d10:	2280           	movel %d0,%a1@                              
  return NULL;                                                        
   53d12:	4280           	clrl %d0                                    
}                                                                     
   53d14:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

000477a4 <_Objects_Id_to_name>: */ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) {
   477a4:	4e56 fffc      	linkw %fp,#-4                               
   477a8:	222e 0008      	movel %fp@(8),%d1                           
   477ac:	2f02           	movel %d2,%sp@-                             
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
   477ae:	4a81           	tstl %d1                                    
   477b0:	660a           	bnes 477bc <_Objects_Id_to_name+0x18>       
   477b2:	2079 0005 e914 	moveal 5e914 <_Per_CPU_Information+0xc>,%a0 
   477b8:	2228 0008      	movel %a0@(8),%d1                           
   477bc:	7418           	moveq #24,%d2                               
   477be:	2001           	movel %d1,%d0                               
   477c0:	e4a8           	lsrl %d2,%d0                                
   477c2:	143c 0007      	moveb #7,%d2                                
   477c6:	c082           	andl %d2,%d0                                
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
   477c8:	143c 0002      	moveb #2,%d2                                
   477cc:	2040           	moveal %d0,%a0                              
   477ce:	5388           	subql #1,%a0                                
   477d0:	b488           	cmpl %a0,%d2                                
   477d2:	6538           	bcss 4780c <_Objects_Id_to_name+0x68>       
   477d4:	6040           	bras 47816 <_Objects_Id_to_name+0x72>       
 */                                                                   
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(                     
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (uint32_t)                                                   
   477d6:	2001           	movel %d1,%d0                               
   477d8:	741b           	moveq #27,%d2                               
   477da:	e4a8           	lsrl %d2,%d0                                
  if ( !_Objects_Information_table[ the_api ] )                       
    return OBJECTS_INVALID_ID;                                        
                                                                      
  the_class = _Objects_Get_class( tmpId );                            
                                                                      
  information = _Objects_Information_table[ the_api ][ the_class ];   
   477dc:	2030 0c00      	movel %a0@(00000000,%d0:l:4),%d0            
  if ( !information )                                                 
   477e0:	672a           	beqs 4780c <_Objects_Id_to_name+0x68>       <== NEVER TAKEN
  #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 ); 
   477e2:	486e fffc      	pea %fp@(-4)                                
   477e6:	2f01           	movel %d1,%sp@-                             
   477e8:	2f00           	movel %d0,%sp@-                             
   477ea:	4eb9 0004 773c 	jsr 4773c <_Objects_Get>                    
  if ( !the_object )                                                  
   477f0:	4fef 000c      	lea %sp@(12),%sp                            
   477f4:	4a80           	tstl %d0                                    
   477f6:	6714           	beqs 4780c <_Objects_Id_to_name+0x68>       
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
   477f8:	206e 000c      	moveal %fp@(12),%a0                         
   477fc:	2240           	moveal %d0,%a1                              
   477fe:	20a9 000c      	movel %a1@(12),%a0@                         
  _Thread_Enable_dispatch();                                          
   47802:	4eb9 0004 8374 	jsr 48374 <_Thread_Enable_dispatch>         
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
   47808:	4280           	clrl %d0                                    
   4780a:	6002           	bras 4780e <_Objects_Id_to_name+0x6a>       
  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;                                        
   4780c:	7003           	moveq #3,%d0                                
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
   4780e:	242e fff8      	movel %fp@(-8),%d2                          
   47812:	4e5e           	unlk %fp                                    
   47814:	4e75           	rts                                         
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
   47816:	41f9 0005 e73c 	lea 5e73c <_Objects_Information_table>,%a0  
   4781c:	2070 0c00      	moveal %a0@(00000000,%d0:l:4),%a0           
   47820:	4a88           	tstl %a0                                    
   47822:	66b2           	bnes 477d6 <_Objects_Id_to_name+0x32>       
   47824:	60e6           	bras 4780c <_Objects_Id_to_name+0x68>       
	...                                                                  
                                                                      

0004b31e <_RBTree_Extract_unprotected>: */ void _RBTree_Extract_unprotected( RBTree_Control *the_rbtree, RBTree_Node *the_node ) {
   4b31e:	4e56 ffec      	linkw %fp,#-20                              
   4b322:	48d7 3c04      	moveml %d2/%a2-%a5,%sp@                     
   4b326:	286e 0008      	moveal %fp@(8),%a4                          
   4b32a:	246e 000c      	moveal %fp@(12),%a2                         
  RBTree_Node *leaf, *target;                                         
  RBTree_Color victim_color;                                          
  RBTree_Direction dir;                                               
                                                                      
  if (!the_node) return;                                              
   4b32e:	4a8a           	tstl %a2                                    
   4b330:	6700 0110      	beqw 4b442 <_RBTree_Extract_unprotected+0x124>
                                                                      
  /* check if min needs to be updated */                              
  if (the_node == the_rbtree->first[RBT_LEFT]) {                      
   4b334:	b5ec 0008      	cmpal %a4@(8),%a2                           
   4b338:	661a           	bnes 4b354 <_RBTree_Extract_unprotected+0x36>
    if (the_node->child[RBT_RIGHT])                                   
   4b33a:	202a 0008      	movel %a2@(8),%d0                           
   4b33e:	6706           	beqs 4b346 <_RBTree_Extract_unprotected+0x28>
      the_rbtree->first[RBT_LEFT] = the_node->child[RBT_RIGHT];       
   4b340:	2940 0008      	movel %d0,%a4@(8)                           
   4b344:	600e           	bras 4b354 <_RBTree_Extract_unprotected+0x36>
    else {                                                            
      the_rbtree->first[RBT_LEFT] = the_node->parent;                 
   4b346:	2012           	movel %a2@,%d0                              
   4b348:	2940 0008      	movel %d0,%a4@(8)                           
      if(_RBTree_Are_nodes_equal((RBTree_Node *)the_rbtree,           
   4b34c:	b08c           	cmpl %a4,%d0                                
   4b34e:	6604           	bnes 4b354 <_RBTree_Extract_unprotected+0x36>
            the_rbtree->first[RBT_LEFT]))                             
        the_rbtree->first[RBT_LEFT] = NULL;                           
   4b350:	42ac 0008      	clrl %a4@(8)                                
   4b354:	2a6a 0004      	moveal %a2@(4),%a5                          
    }                                                                 
  }                                                                   
  /* check if max needs to be updated: note, min can equal max (1 element) */
  if (the_node == the_rbtree->first[RBT_RIGHT]) {                     
   4b358:	b5ec 000c      	cmpal %a4@(12),%a2                          
   4b35c:	6618           	bnes 4b376 <_RBTree_Extract_unprotected+0x58>
    if (the_node->child[RBT_LEFT])                                    
   4b35e:	4a8d           	tstl %a5                                    
   4b360:	6706           	beqs 4b368 <_RBTree_Extract_unprotected+0x4a>
      the_rbtree->first[RBT_RIGHT] = the_node->child[RBT_LEFT];       
   4b362:	294d 000c      	movel %a5,%a4@(12)                          
   4b366:	600e           	bras 4b376 <_RBTree_Extract_unprotected+0x58>
    else {                                                            
      the_rbtree->first[RBT_RIGHT] = the_node->parent;                
   4b368:	2012           	movel %a2@,%d0                              
   4b36a:	2940 000c      	movel %d0,%a4@(12)                          
      if(_RBTree_Are_nodes_equal((RBTree_Node *)the_rbtree,           
   4b36e:	b08c           	cmpl %a4,%d0                                
   4b370:	6604           	bnes 4b376 <_RBTree_Extract_unprotected+0x58>
            the_rbtree->first[RBT_RIGHT]))                            
        the_rbtree->first[RBT_RIGHT] = NULL;                          
   4b372:	42ac 000c      	clrl %a4@(12)                               
   * either max in node->child[RBT_LEFT] or min in node->child[RBT_RIGHT],
   * and replace the_node with the target node. This maintains the binary
   * search tree property, but may violate the red-black properties.  
   */                                                                 
                                                                      
  if (the_node->child[RBT_LEFT] && the_node->child[RBT_RIGHT]) {      
   4b376:	264d           	moveal %a5,%a3                              
   4b378:	4a8d           	tstl %a5                                    
   4b37a:	6778           	beqs 4b3f4 <_RBTree_Extract_unprotected+0xd6>
   4b37c:	4aaa 0008      	tstl %a2@(8)                                
   4b380:	6604           	bnes 4b386 <_RBTree_Extract_unprotected+0x68>
   4b382:	6078           	bras 4b3fc <_RBTree_Extract_unprotected+0xde>
    target = the_node->child[RBT_LEFT]; /* find max in node->child[RBT_LEFT] */
    while (target->child[RBT_RIGHT]) target = target->child[RBT_RIGHT];
   4b384:	2640           	moveal %d0,%a3                              
   4b386:	202b 0008      	movel %a3@(8),%d0                           
   4b38a:	66f8           	bnes 4b384 <_RBTree_Extract_unprotected+0x66>
     * target's position (target is the right child of target->parent)
     * when target vacates it. if there is no child, then target->parent
     * should become NULL. This may cause the coloring to be violated.
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = target->child[RBT_LEFT];                                   
   4b38c:	2a6b 0004      	moveal %a3@(4),%a5                          
    if(leaf) {                                                        
   4b390:	4a8d           	tstl %a5                                    
   4b392:	6704           	beqs 4b398 <_RBTree_Extract_unprotected+0x7a>
      leaf->parent = target->parent;                                  
   4b394:	2a93           	movel %a3@,%a5@                             
   4b396:	600a           	bras 4b3a2 <_RBTree_Extract_unprotected+0x84>
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
   4b398:	2f0b           	movel %a3,%sp@-                             
   4b39a:	4eb9 0004 b1d8 	jsr 4b1d8 <_RBTree_Extract_validate_unprotected>
   4b3a0:	588f           	addql #4,%sp                                
    }                                                                 
    victim_color = target->color;                                     
    dir = target != target->parent->child[0];                         
   4b3a2:	2053           	moveal %a3@,%a0                             
   4b3a4:	b7e8 0004      	cmpal %a0@(4),%a3                           
   4b3a8:	56c1           	sne %d1                                     
    target->parent->child[dir] = leaf;                                
   4b3aa:	7401           	moveq #1,%d2                                
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
    dir = target != target->parent->child[0];                         
   4b3ac:	49c1           	extbl %d1                                   
    target->parent->child[dir] = leaf;                                
   4b3ae:	9481           	subl %d1,%d2                                
   4b3b0:	218d 2c00      	movel %a5,%a0@(00000000,%d2:l:4)            
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
    the_node->parent->child[dir] = target;                            
   4b3b4:	7401           	moveq #1,%d2                                
    victim_color = target->color;                                     
    dir = target != target->parent->child[0];                         
    target->parent->child[dir] = leaf;                                
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
   4b3b6:	2052           	moveal %a2@,%a0                             
   4b3b8:	b5e8 0004      	cmpal %a0@(4),%a2                           
   4b3bc:	56c1           	sne %d1                                     
      leaf->parent = target->parent;                                  
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(target);                   
    }                                                                 
    victim_color = target->color;                                     
   4b3be:	202b 000c      	movel %a3@(12),%d0                          
    dir = target != target->parent->child[0];                         
    target->parent->child[dir] = leaf;                                
                                                                      
    /* now replace the_node with target */                            
    dir = the_node != the_node->parent->child[0];                     
   4b3c2:	49c1           	extbl %d1                                   
    the_node->parent->child[dir] = target;                            
   4b3c4:	9481           	subl %d1,%d2                                
   4b3c6:	218b 2c00      	movel %a3,%a0@(00000000,%d2:l:4)            
                                                                      
    /* set target's new children to the original node's children */   
    target->child[RBT_RIGHT] = the_node->child[RBT_RIGHT];            
   4b3ca:	276a 0008 0008 	movel %a2@(8),%a3@(8)                       
    if (the_node->child[RBT_RIGHT])                                   
   4b3d0:	206a 0008      	moveal %a2@(8),%a0                          
   4b3d4:	4a88           	tstl %a0                                    
   4b3d6:	6702           	beqs 4b3da <_RBTree_Extract_unprotected+0xbc><== NEVER TAKEN
      the_node->child[RBT_RIGHT]->parent = target;                    
   4b3d8:	208b           	movel %a3,%a0@                              
    target->child[RBT_LEFT] = the_node->child[RBT_LEFT];              
   4b3da:	276a 0004 0004 	movel %a2@(4),%a3@(4)                       
    if (the_node->child[RBT_LEFT])                                    
   4b3e0:	206a 0004      	moveal %a2@(4),%a0                          
   4b3e4:	4a88           	tstl %a0                                    
   4b3e6:	6702           	beqs 4b3ea <_RBTree_Extract_unprotected+0xcc>
      the_node->child[RBT_LEFT]->parent = target;                     
   4b3e8:	208b           	movel %a3,%a0@                              
    /* finally, update the parent node and recolor. target has completely
     * replaced the_node, and target's child has moved up the tree if needed.
     * the_node is no longer part of the tree, although it has valid pointers
     * still.                                                         
     */                                                               
    target->parent = the_node->parent;                                
   4b3ea:	2692           	movel %a2@,%a3@                             
    target->color = the_node->color;                                  
   4b3ec:	276a 000c 000c 	movel %a2@(12),%a3@(12)                     
   4b3f2:	602c           	bras 4b420 <_RBTree_Extract_unprotected+0x102>
     * the_node's location in the tree. This may cause the coloring to be
     * violated. We will fix it later.                                
     * For now we store the color of the node being deleted in victim_color.
     */                                                               
    leaf = the_node->child[RBT_LEFT] ?                                
              the_node->child[RBT_LEFT] : the_node->child[RBT_RIGHT]; 
   4b3f4:	2a6a 0008      	moveal %a2@(8),%a5                          
    if( leaf ) {                                                      
   4b3f8:	4a8d           	tstl %a5                                    
   4b3fa:	6704           	beqs 4b400 <_RBTree_Extract_unprotected+0xe2>
      leaf->parent = the_node->parent;                                
   4b3fc:	2a92           	movel %a2@,%a5@                             
   4b3fe:	600a           	bras 4b40a <_RBTree_Extract_unprotected+0xec>
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(the_node);                 
   4b400:	2f0a           	movel %a2,%sp@-                             
   4b402:	4eb9 0004 b1d8 	jsr 4b1d8 <_RBTree_Extract_validate_unprotected>
   4b408:	588f           	addql #4,%sp                                
    }                                                                 
    victim_color = the_node->color;                                   
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
   4b40a:	2052           	moveal %a2@,%a0                             
   4b40c:	b5e8 0004      	cmpal %a0@(4),%a2                           
   4b410:	56c1           	sne %d1                                     
    the_node->parent->child[dir] = leaf;                              
   4b412:	7401           	moveq #1,%d2                                
      _RBTree_Extract_validate_unprotected(the_node);                 
    }                                                                 
    victim_color = the_node->color;                                   
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
   4b414:	49c1           	extbl %d1                                   
    the_node->parent->child[dir] = leaf;                              
   4b416:	9481           	subl %d1,%d2                                
      leaf->parent = the_node->parent;                                
    } else {                                                          
      /* fix the tree here if the child is a null leaf. */            
      _RBTree_Extract_validate_unprotected(the_node);                 
    }                                                                 
    victim_color = the_node->color;                                   
   4b418:	202a 000c      	movel %a2@(12),%d0                          
                                                                      
    /* remove the_node from the tree */                               
    dir = the_node != the_node->parent->child[0];                     
    the_node->parent->child[dir] = leaf;                              
   4b41c:	218d 2c00      	movel %a5,%a0@(00000000,%d2:l:4)            
  /* fix coloring. leaf has moved up the tree. The color of the deleted
   * node is in victim_color. There are two cases:                    
   *   1. Deleted a red node, its child must be black. Nothing must be done.
   *   2. Deleted a black node, its child must be red. Paint child black.
   */                                                                 
  if (victim_color == RBT_BLACK) { /* eliminate case 1 */             
   4b420:	4a80           	tstl %d0                                    
   4b422:	6608           	bnes 4b42c <_RBTree_Extract_unprotected+0x10e>
    if (leaf) {                                                       
   4b424:	4a8d           	tstl %a5                                    
   4b426:	6704           	beqs 4b42c <_RBTree_Extract_unprotected+0x10e>
      leaf->color = RBT_BLACK; /* case 2 */                           
   4b428:	42ad 000c      	clrl %a5@(12)                               
                                                                      
  /* Wipe the_node */                                                 
  _RBTree_Set_off_rbtree(the_node);                                   
                                                                      
  /* set root to black, if it exists */                               
  if (the_rbtree->root) the_rbtree->root->color = RBT_BLACK;          
   4b42c:	206c 0004      	moveal %a4@(4),%a0                          
 */                                                                   
RTEMS_INLINE_ROUTINE void _RBTree_Set_off_rbtree(                     
    RBTree_Node *node                                                 
    )                                                                 
{                                                                     
  node->parent = node->child[RBT_LEFT] = node->child[RBT_RIGHT] = NULL;
   4b430:	42aa 0008      	clrl %a2@(8)                                
   4b434:	42aa 0004      	clrl %a2@(4)                                
   4b438:	4292           	clrl %a2@                                   
   4b43a:	4a88           	tstl %a0                                    
   4b43c:	6704           	beqs 4b442 <_RBTree_Extract_unprotected+0x124>
   4b43e:	42a8 000c      	clrl %a0@(12)                               
}                                                                     
   4b442:	4cee 3c04 ffec 	moveml %fp@(-20),%d2/%a2-%a5                
   4b448:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

0004b1d8 <_RBTree_Extract_validate_unprotected>: * of the extract operation. */ void _RBTree_Extract_validate_unprotected( RBTree_Node *the_node ) {
   4b1d8:	4e56 ffe8      	linkw %fp,#-24                              
   4b1dc:	48d7 3c0c      	moveml %d2-%d3/%a2-%a5,%sp@                 
   4b1e0:	266e 0008      	moveal %fp@(8),%a3                          
  RBTree_Node *parent, *sibling;                                      
  RBTree_Direction dir;                                               
                                                                      
  parent = the_node->parent;                                          
   4b1e4:	2453           	moveal %a3@,%a2                             
  if(!parent->parent) return;                                         
   4b1e6:	4a92           	tstl %a2@                                   
   4b1e8:	6700 012a      	beqw 4b314 <_RBTree_Extract_validate_unprotected+0x13c>
                                                                      
  sibling = _RBTree_Sibling(the_node);                                
   4b1ec:	2f0b           	movel %a3,%sp@-                             
   4b1ee:	49fa ff6c      	lea %pc@(4b15c <_RBTree_Sibling>),%a4       
   4b1f2:	4e94           	jsr %a4@                                    
   4b1f4:	588f           	addql #4,%sp                                
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
      _RBTree_Rotate(parent, dir);                                    
   4b1f6:	4bfa ff8e      	lea %pc@(4b186 <_RBTree_Rotate>),%a5        
  RBTree_Direction dir;                                               
                                                                      
  parent = the_node->parent;                                          
  if(!parent->parent) return;                                         
                                                                      
  sibling = _RBTree_Sibling(the_node);                                
   4b1fa:	2040           	moveal %d0,%a0                              
                                                                      
  /* continue to correct tree as long as the_node is black and not the root */
  while (!_RBTree_Is_red(the_node) && parent->parent) {               
   4b1fc:	6000 00ec      	braw 4b2ea <_RBTree_Extract_validate_unprotected+0x112>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
   4b200:	4a88           	tstl %a0                                    
   4b202:	6730           	beqs 4b234 <_RBTree_Extract_validate_unprotected+0x5c><== NEVER TAKEN
   4b204:	7001           	moveq #1,%d0                                
   4b206:	b0a8 000c      	cmpl %a0@(12),%d0                           
   4b20a:	6628           	bnes 4b234 <_RBTree_Extract_validate_unprotected+0x5c>
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
   4b20c:	b7ea 0004      	cmpal %a2@(4),%a3                           
   4b210:	56c2           	sne %d2                                     
     * then rotate parent left, making the sibling be the_node's grandparent.
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
   4b212:	2540 000c      	movel %d0,%a2@(12)                          
      sibling->color = RBT_BLACK;                                     
      dir = the_node != parent->child[0];                             
   4b216:	49c2           	extbl %d2                                   
   4b218:	4482           	negl %d2                                    
     * Now the_node has a black sibling and red parent. After rotation,
     * update sibling pointer.                                        
     */                                                               
    if (_RBTree_Is_red(sibling)) {                                    
      parent->color = RBT_RED;                                        
      sibling->color = RBT_BLACK;                                     
   4b21a:	42a8 000c      	clrl %a0@(12)                               
      dir = the_node != parent->child[0];                             
      _RBTree_Rotate(parent, dir);                                    
   4b21e:	2f02           	movel %d2,%sp@-                             
   4b220:	2f0a           	movel %a2,%sp@-                             
   4b222:	4e95           	jsr %a5@                                    
      sibling = parent->child[!dir];                                  
   4b224:	508f           	addql #8,%sp                                
   4b226:	4a82           	tstl %d2                                    
   4b228:	57c0           	seq %d0                                     
   4b22a:	7201           	moveq #1,%d1                                
   4b22c:	49c0           	extbl %d0                                   
   4b22e:	9280           	subl %d0,%d1                                
   4b230:	2072 1c00      	moveal %a2@(00000000,%d1:l:4),%a0           
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
   4b234:	2268 0008      	moveal %a0@(8),%a1                          
   4b238:	4a89           	tstl %a1                                    
   4b23a:	670e           	beqs 4b24a <_RBTree_Extract_validate_unprotected+0x72>
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
void _RBTree_Extract_validate_unprotected(                            
   4b23c:	7001           	moveq #1,%d0                                
   4b23e:	b0a9 000c      	cmpl %a1@(12),%d0                           
   4b242:	57c0           	seq %d0                                     
   4b244:	49c0           	extbl %d0                                   
   4b246:	4480           	negl %d0                                    
   4b248:	6002           	bras 4b24c <_RBTree_Extract_validate_unprotected+0x74>
   4b24a:	4280           	clrl %d0                                    
      _RBTree_Rotate(parent, dir);                                    
      sibling = parent->child[!dir];                                  
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
   4b24c:	4a00           	tstb %d0                                    
   4b24e:	6630           	bnes 4b280 <_RBTree_Extract_validate_unprotected+0xa8>
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
   4b250:	2268 0004      	moveal %a0@(4),%a1                          
   4b254:	4a89           	tstl %a1                                    
   4b256:	670e           	beqs 4b266 <_RBTree_Extract_validate_unprotected+0x8e>
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
void _RBTree_Extract_validate_unprotected(                            
   4b258:	7201           	moveq #1,%d1                                
   4b25a:	b2a9 000c      	cmpl %a1@(12),%d1                           
   4b25e:	57c0           	seq %d0                                     
   4b260:	49c0           	extbl %d0                                   
   4b262:	4480           	negl %d0                                    
   4b264:	6002           	bras 4b268 <_RBTree_Extract_validate_unprotected+0x90>
   4b266:	4280           	clrl %d0                                    
      _RBTree_Rotate(parent, dir);                                    
      sibling = parent->child[!dir];                                  
    }                                                                 
                                                                      
    /* sibling is black, see if both of its children are also black. */
    if (!_RBTree_Is_red(sibling->child[RBT_RIGHT]) &&                 
   4b268:	4a00           	tstb %d0                                    
   4b26a:	6614           	bnes 4b280 <_RBTree_Extract_validate_unprotected+0xa8>
        !_RBTree_Is_red(sibling->child[RBT_LEFT])) {                  
        sibling->color = RBT_RED;                                     
   4b26c:	7001           	moveq #1,%d0                                
   4b26e:	2140 000c      	movel %d0,%a0@(12)                          
   4b272:	b0aa 000c      	cmpl %a2@(12),%d0                           
   4b276:	6600 008c      	bnew 4b304 <_RBTree_Extract_validate_unprotected+0x12c>
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
   4b27a:	42aa 000c      	clrl %a2@(12)                               
          break;                                                      
   4b27e:	6078           	bras 4b2f8 <_RBTree_Extract_validate_unprotected+0x120>
       * cases, either the_node is to the left or the right of the parent.
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
   4b280:	b7ea 0004      	cmpal %a2@(4),%a3                           
   4b284:	56c2           	sne %d2                                     
   4b286:	49c2           	extbl %d2                                   
   4b288:	4482           	negl %d2                                    
      if (!_RBTree_Is_red(sibling->child[!dir])) {                    
   4b28a:	57c3           	seq %d3                                     
   4b28c:	49c3           	extbl %d3                                   
   4b28e:	4483           	negl %d3                                    
   4b290:	2270 3c04      	moveal %a0@(00000004,%d3:l:4),%a1           
   4b294:	4a89           	tstl %a1                                    
   4b296:	670e           	beqs 4b2a6 <_RBTree_Extract_validate_unprotected+0xce>
 *  This function maintains the properties of the red-black tree.     
 *                                                                    
 *  @note It does NOT disable interrupts to ensure the atomicity      
 *        of the extract operation.                                   
 */                                                                   
void _RBTree_Extract_validate_unprotected(                            
   4b298:	7201           	moveq #1,%d1                                
   4b29a:	b2a9 000c      	cmpl %a1@(12),%d1                           
   4b29e:	57c0           	seq %d0                                     
   4b2a0:	49c0           	extbl %d0                                   
   4b2a2:	4480           	negl %d0                                    
   4b2a4:	6002           	bras 4b2a8 <_RBTree_Extract_validate_unprotected+0xd0>
   4b2a6:	4280           	clrl %d0                                    
       * In both cases, first check if one of sibling's children is black,
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[!dir])) {                    
   4b2a8:	4a00           	tstb %d0                                    
   4b2aa:	6620           	bnes 4b2cc <_RBTree_Extract_validate_unprotected+0xf4>
        sibling->color = RBT_RED;                                     
   4b2ac:	7001           	moveq #1,%d0                                
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, !dir);                                
   4b2ae:	7201           	moveq #1,%d1                                
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[!dir])) {                    
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
   4b2b0:	2270 2c04      	moveal %a0@(00000004,%d2:l:4),%a1           
       * and if so rotate in the proper direction and update sibling pointer.
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[!dir])) {                    
        sibling->color = RBT_RED;                                     
   4b2b4:	2140 000c      	movel %d0,%a0@(12)                          
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, !dir);                                
   4b2b8:	b581           	eorl %d2,%d1                                
       * Then switch the sibling and parent colors, and rotate through parent.
       */                                                             
      dir = the_node != parent->child[0];                             
      if (!_RBTree_Is_red(sibling->child[!dir])) {                    
        sibling->color = RBT_RED;                                     
        sibling->child[dir]->color = RBT_BLACK;                       
   4b2ba:	42a9 000c      	clrl %a1@(12)                               
        _RBTree_Rotate(sibling, !dir);                                
   4b2be:	2f01           	movel %d1,%sp@-                             
   4b2c0:	2f08           	movel %a0,%sp@-                             
   4b2c2:	4eba fec2      	jsr %pc@(4b186 <_RBTree_Rotate>)            
        sibling = parent->child[!dir];                                
   4b2c6:	508f           	addql #8,%sp                                
   4b2c8:	2072 3c04      	moveal %a2@(00000004,%d3:l:4),%a0           
      }                                                               
      sibling->color = parent->color;                                 
   4b2cc:	216a 000c 000c 	movel %a2@(12),%a0@(12)                     
      parent->color = RBT_BLACK;                                      
      sibling->child[!dir]->color = RBT_BLACK;                        
   4b2d2:	2070 3c04      	moveal %a0@(00000004,%d3:l:4),%a0           
        sibling->child[dir]->color = RBT_BLACK;                       
        _RBTree_Rotate(sibling, !dir);                                
        sibling = parent->child[!dir];                                
      }                                                               
      sibling->color = parent->color;                                 
      parent->color = RBT_BLACK;                                      
   4b2d6:	42aa 000c      	clrl %a2@(12)                               
      sibling->child[!dir]->color = RBT_BLACK;                        
   4b2da:	42a8 000c      	clrl %a0@(12)                               
      _RBTree_Rotate(parent, dir);                                    
   4b2de:	2f02           	movel %d2,%sp@-                             
   4b2e0:	2f0a           	movel %a2,%sp@-                             
   4b2e2:	4eba fea2      	jsr %pc@(4b186 <_RBTree_Rotate>)            
      break; /* done */                                               
   4b2e6:	508f           	addql #8,%sp                                
   4b2e8:	600e           	bras 4b2f8 <_RBTree_Extract_validate_unprotected+0x120>
  if(!parent->parent) return;                                         
                                                                      
  sibling = _RBTree_Sibling(the_node);                                
                                                                      
  /* continue to correct tree as long as the_node is black and not the root */
  while (!_RBTree_Is_red(the_node) && parent->parent) {               
   4b2ea:	7001           	moveq #1,%d0                                
   4b2ec:	b0ab 000c      	cmpl %a3@(12),%d0                           
   4b2f0:	6706           	beqs 4b2f8 <_RBTree_Extract_validate_unprotected+0x120>
   4b2f2:	4a92           	tstl %a2@                                   
   4b2f4:	6600 ff0a      	bnew 4b200 <_RBTree_Extract_validate_unprotected+0x28>
      sibling->child[!dir]->color = RBT_BLACK;                        
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
   4b2f8:	2053           	moveal %a3@,%a0                             
   4b2fa:	4a90           	tstl %a0@                                   
   4b2fc:	6616           	bnes 4b314 <_RBTree_Extract_validate_unprotected+0x13c>
   4b2fe:	42ab 000c      	clrl %a3@(12)                               
   4b302:	6010           	bras 4b314 <_RBTree_Extract_validate_unprotected+0x13c>
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
          break;                                                      
        }                                                             
        the_node = parent; /* done if parent is red */                
        parent = the_node->parent;                                    
   4b304:	2412           	movel %a2@,%d2                              
        sibling = _RBTree_Sibling(the_node);                          
   4b306:	264a           	moveal %a2,%a3                              
   4b308:	2f0a           	movel %a2,%sp@-                             
        if (_RBTree_Is_red(parent)) {                                 
          parent->color = RBT_BLACK;                                  
          break;                                                      
        }                                                             
        the_node = parent; /* done if parent is red */                
        parent = the_node->parent;                                    
   4b30a:	2442           	moveal %d2,%a2                              
        sibling = _RBTree_Sibling(the_node);                          
   4b30c:	4e94           	jsr %a4@                                    
   4b30e:	588f           	addql #4,%sp                                
   4b310:	2040           	moveal %d0,%a0                              
   4b312:	60d6           	bras 4b2ea <_RBTree_Extract_validate_unprotected+0x112>
      _RBTree_Rotate(parent, dir);                                    
      break; /* done */                                               
    }                                                                 
  } /* while */                                                       
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
}                                                                     
   4b314:	4cee 3c0c ffe8 	moveml %fp@(-24),%d2-%d3/%a2-%a5            
   4b31a:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00048a58 <_RBTree_Initialize>: void *starting_address, size_t number_nodes, size_t node_size, bool is_unique ) {
   48a58:	4e56 ffec      	linkw %fp,#-20                              
   48a5c:	202e 001c      	movel %fp@(28),%d0                          
   48a60:	48d7 0c1c      	moveml %d2-%d4/%a2-%a3,%sp@                 
   48a64:	246e 0008      	moveal %fp@(8),%a2                          
   48a68:	262e 0014      	movel %fp@(20),%d3                          
   48a6c:	282e 0018      	movel %fp@(24),%d4                          
  size_t      count;                                                  
  RBTree_Node *next;                                                  
                                                                      
  /* TODO: Error message? */                                          
  if (!the_rbtree) return;                                            
   48a70:	4a8a           	tstl %a2                                    
   48a72:	6734           	beqs 48aa8 <_RBTree_Initialize+0x50>        <== NEVER TAKEN
    RBTree_Control          *the_rbtree,                              
    RBTree_Compare_function  compare_function,                        
    bool                     is_unique                                
    )                                                                 
{                                                                     
  the_rbtree->permanent_null   = NULL;                                
   48a74:	4292           	clrl %a2@                                   
  the_rbtree->root             = NULL;                                
  the_rbtree->first[0]         = NULL;                                
  the_rbtree->first[1]         = NULL;                                
  the_rbtree->compare_function = compare_function;                    
   48a76:	256e 000c 0010 	movel %fp@(12),%a2@(16)                     
                                                                      
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
   48a7c:	242e 0010      	movel %fp@(16),%d2                          
    RBTree_Compare_function  compare_function,                        
    bool                     is_unique                                
    )                                                                 
{                                                                     
  the_rbtree->permanent_null   = NULL;                                
  the_rbtree->root             = NULL;                                
   48a80:	42aa 0004      	clrl %a2@(4)                                
  while ( count-- ) {                                                 
    _RBTree_Insert(the_rbtree, next);                                 
   48a84:	47f9 0004 8a2c 	lea 48a2c <_RBTree_Insert>,%a3              
  the_rbtree->first[0]         = NULL;                                
   48a8a:	42aa 0008      	clrl %a2@(8)                                
  the_rbtree->first[1]         = NULL;                                
   48a8e:	42aa 000c      	clrl %a2@(12)                               
  the_rbtree->compare_function = compare_function;                    
  the_rbtree->is_unique        = is_unique;                           
   48a92:	1540 0014      	moveb %d0,%a2@(20)                          
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
   48a96:	600c           	bras 48aa4 <_RBTree_Initialize+0x4c>        
    _RBTree_Insert(the_rbtree, next);                                 
   48a98:	2f02           	movel %d2,%sp@-                             
 *    node_size        - size of node in bytes                        
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _RBTree_Initialize(                                              
   48a9a:	d484           	addl %d4,%d2                                
   48a9c:	5383           	subql #1,%d3                                
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
    _RBTree_Insert(the_rbtree, next);                                 
   48a9e:	2f0a           	movel %a2,%sp@-                             
   48aa0:	4e93           	jsr %a3@                                    
 *    node_size        - size of node in bytes                        
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
                                                                      
void _RBTree_Initialize(                                              
   48aa2:	508f           	addql #8,%sp                                
  /* could do sanity checks here */                                   
  _RBTree_Initialize_empty(the_rbtree, compare_function, is_unique);  
                                                                      
  count = number_nodes;                                               
  next  = starting_address;                                           
  while ( count-- ) {                                                 
   48aa4:	4a83           	tstl %d3                                    
   48aa6:	66f0           	bnes 48a98 <_RBTree_Initialize+0x40>        
    _RBTree_Insert(the_rbtree, next);                                 
    next           = (RBTree_Node *)                                  
                        _Addresses_Add_offset( (void *) next, node_size );
  }                                                                   
}                                                                     
   48aa8:	4cee 0c1c ffec 	moveml %fp@(-20),%d2-%d4/%a2-%a3            
   48aae:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004b15c <_RBTree_Sibling>: * exists, and NULL if not. */ RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Sibling( RBTree_Node *the_node ) {
   4b15c:	4e56 0000      	linkw %fp,#0                                
   4b160:	226e 0008      	moveal %fp@(8),%a1                          
  if(!the_node) return NULL;                                          
   4b164:	4a89           	tstl %a1                                    
   4b166:	6718           	beqs 4b180 <_RBTree_Sibling+0x24>           
  if(!(the_node->parent)) return NULL;                                
   4b168:	2051           	moveal %a1@,%a0                             
   4b16a:	4a88           	tstl %a0                                    
   4b16c:	6712           	beqs 4b180 <_RBTree_Sibling+0x24>           <== NEVER TAKEN
  if(!(the_node->parent->parent)) return NULL;                        
   4b16e:	4a90           	tstl %a0@                                   
   4b170:	670e           	beqs 4b180 <_RBTree_Sibling+0x24>           
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
   4b172:	2028 0004      	movel %a0@(4),%d0                           
   4b176:	b089           	cmpl %a1,%d0                                
   4b178:	6608           	bnes 4b182 <_RBTree_Sibling+0x26>           
    return the_node->parent->child[RBT_RIGHT];                        
   4b17a:	2028 0008      	movel %a0@(8),%d0                           
   4b17e:	6002           	bras 4b182 <_RBTree_Sibling+0x26>           
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
   4b180:	4280           	clrl %d0                                    
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
    return the_node->parent->child[RBT_RIGHT];                        
  else                                                                
    return the_node->parent->child[RBT_LEFT];                         
}                                                                     
   4b182:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

0004b4ca <_RBTree_Validate_insert_unprotected>: * append operation. */ void _RBTree_Validate_insert_unprotected( RBTree_Node *the_node ) {
   4b4ca:	4e56 fff0      	linkw %fp,#-16                              
   4b4ce:	48d7 1c04      	moveml %d2/%a2-%a4,%sp@                     
   4b4d2:	266e 0008      	moveal %fp@(8),%a3                          
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
      g->color = RBT_RED;                                             
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
   4b4d6:	49fa ffa0      	lea %pc@(4b478 <_RBTree_Rotate>),%a4        
  RBTree_Node *u,*g;                                                  
                                                                      
  /* note: the insert root case is handled already */                 
  /* if the parent is black, nothing needs to be done                 
   * otherwise may need to loop a few times */                        
  while (_RBTree_Is_red(_RBTree_Parent(the_node))) {                  
   4b4da:	604e           	bras 4b52a <_RBTree_Validate_insert_unprotected+0x60>
    )                                                                 
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
  if(!(the_node->parent->parent->parent)) return NULL;                
   4b4dc:	4a92           	tstl %a2@                                   
   4b4de:	6762           	beqs 4b542 <_RBTree_Validate_insert_unprotected+0x78><== NEVER TAKEN
{                                                                     
  if(!the_node) return NULL;                                          
  if(!(the_node->parent)) return NULL;                                
  if(!(the_node->parent->parent)) return NULL;                        
                                                                      
  if(the_node == the_node->parent->child[RBT_LEFT])                   
   4b4e0:	226a 0004      	moveal %a2@(4),%a1                          
   4b4e4:	b3c8           	cmpal %a0,%a1                               
   4b4e6:	6604           	bnes 4b4ec <_RBTree_Validate_insert_unprotected+0x22>
    return the_node->parent->child[RBT_RIGHT];                        
   4b4e8:	226a 0008      	moveal %a2@(8),%a1                          
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
   4b4ec:	4a89           	tstl %a1                                    
   4b4ee:	6752           	beqs 4b542 <_RBTree_Validate_insert_unprotected+0x78>
   4b4f0:	7001           	moveq #1,%d0                                
   4b4f2:	b0a9 000c      	cmpl %a1@(12),%d0                           
   4b4f6:	664a           	bnes 4b542 <_RBTree_Validate_insert_unprotected+0x78>
    u = _RBTree_Parent_sibling(the_node);                             
    g = the_node->parent->parent;                                     
                                                                      
    /* if uncle is red, repaint uncle/parent black and grandparent red */
    if(_RBTree_Is_red(u)) {                                           
      the_node->parent->color = RBT_BLACK;                            
   4b4f8:	42a8 000c      	clrl %a0@(12)                               
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
   4b4fc:	264a           	moveal %a2,%a3                              
    g = the_node->parent->parent;                                     
                                                                      
    /* if uncle is red, repaint uncle/parent black and grandparent red */
    if(_RBTree_Is_red(u)) {                                           
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
   4b4fe:	42a9 000c      	clrl %a1@(12)                               
      g->color = RBT_RED;                                             
   4b502:	2540 000c      	movel %d0,%a2@(12)                          
   4b506:	6022           	bras 4b52a <_RBTree_Validate_insert_unprotected+0x60>
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
      RBTree_Direction pdir = the_node->parent != g->child[0];        
                                                                      
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
        _RBTree_Rotate(the_node->parent, pdir);                       
   4b508:	2f02           	movel %d2,%sp@-                             
   4b50a:	2f08           	movel %a0,%sp@-                             
   4b50c:	4e94           	jsr %a4@                                    
        the_node = the_node->child[pdir];                             
   4b50e:	508f           	addql #8,%sp                                
   4b510:	2673 2c04      	moveal %a3@(00000004,%d2:l:4),%a3           
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
   4b514:	2053           	moveal %a3@,%a0                             
      g->color = RBT_RED;                                             
   4b516:	7001           	moveq #1,%d0                                
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
        _RBTree_Rotate(the_node->parent, pdir);                       
        the_node = the_node->child[pdir];                             
      }                                                               
      the_node->parent->color = RBT_BLACK;                            
   4b518:	42a8 000c      	clrl %a0@(12)                               
      g->color = RBT_RED;                                             
   4b51c:	2540 000c      	movel %d0,%a2@(12)                          
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
   4b520:	9082           	subl %d2,%d0                                
   4b522:	2f00           	movel %d0,%sp@-                             
   4b524:	2f0a           	movel %a2,%sp@-                             
   4b526:	4e94           	jsr %a4@                                    
   4b528:	508f           	addql #8,%sp                                
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
    return _RBTree_Insert_unprotected( tree, node );                  
  _ISR_Enable( level );                                               
}                                                                     
   4b52a:	2053           	moveal %a3@,%a0                             
 */                                                                   
RTEMS_INLINE_ROUTINE RBTree_Node *_RBTree_Parent(                     
    RBTree_Node *the_node                                             
    )                                                                 
{                                                                     
  if (!the_node->parent->parent) return NULL;                         
   4b52c:	2450           	moveal %a0@,%a2                             
   4b52e:	4a8a           	tstl %a2                                    
   4b530:	670a           	beqs 4b53c <_RBTree_Validate_insert_unprotected+0x72>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _RBTree_Is_red(                             
    const RBTree_Node *the_node                                       
    )                                                                 
{                                                                     
  return (the_node && the_node->color == RBT_RED);                    
   4b532:	7001           	moveq #1,%d0                                
   4b534:	b0a8 000c      	cmpl %a0@(12),%d0                           
   4b538:	6622           	bnes 4b55c <_RBTree_Validate_insert_unprotected+0x92>
   4b53a:	60a0           	bras 4b4dc <_RBTree_Validate_insert_unprotected+0x12>
                                                                      
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
    }                                                                 
  }                                                                   
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
   4b53c:	42ab 000c      	clrl %a3@(12)                               
   4b540:	601a           	bras 4b55c <_RBTree_Validate_insert_unprotected+0x92>
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
      RBTree_Direction pdir = the_node->parent != g->child[0];        
   4b542:	b1ea 0004      	cmpal %a2@(4),%a0                           
   4b546:	56c2           	sne %d2                                     
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
   4b548:	b7e8 0004      	cmpal %a0@(4),%a3                           
   4b54c:	56c0           	sne %d0                                     
      RBTree_Direction pdir = the_node->parent != g->child[0];        
   4b54e:	49c2           	extbl %d2                                   
   4b550:	4482           	negl %d2                                    
      the_node->parent->color = RBT_BLACK;                            
      u->color = RBT_BLACK;                                           
      g->color = RBT_RED;                                             
      the_node = g;                                                   
    } else { /* if uncle is black */                                  
      RBTree_Direction dir = the_node != the_node->parent->child[0];  
   4b552:	49c0           	extbl %d0                                   
   4b554:	4480           	negl %d0                                    
      RBTree_Direction pdir = the_node->parent != g->child[0];        
                                                                      
      /* ensure node is on the same branch direction as parent */     
      if (dir != pdir) {                                              
   4b556:	b480           	cmpl %d0,%d2                                
   4b558:	66ae           	bnes 4b508 <_RBTree_Validate_insert_unprotected+0x3e>
   4b55a:	60b8           	bras 4b514 <_RBTree_Validate_insert_unprotected+0x4a>
      /* now rotate grandparent in the other branch direction (toward uncle) */
      _RBTree_Rotate(g, (1-pdir));                                    
    }                                                                 
  }                                                                   
  if(!the_node->parent->parent) the_node->color = RBT_BLACK;          
}                                                                     
   4b55c:	4cee 1c04 fff0 	moveml %fp@(-16),%d2/%a2-%a4                
   4b562:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

0004a35c <_RTEMS_tasks_Post_switch_extension>: */ void _RTEMS_tasks_Post_switch_extension( Thread_Control *executing ) {
   4a35c:	4e56 ffec      	linkw %fp,#-20                              
  RTEMS_API_Control *api;                                             
  ASR_Information   *asr;                                             
  rtems_signal_set   signal_set;                                      
  Modes_Control      prev_mode;                                       
                                                                      
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
   4a360:	206e 0008      	moveal %fp@(8),%a0                          
 */                                                                   
                                                                      
void _RTEMS_tasks_Post_switch_extension(                              
  Thread_Control *executing                                           
)                                                                     
{                                                                     
   4a364:	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 ];                
   4a368:	2468 00fc      	moveal %a0@(252),%a2                        
  if ( !api )                                                         
   4a36c:	4a8a           	tstl %a2                                    
   4a36e:	6754           	beqs 4a3c4 <_RTEMS_tasks_Post_switch_extension+0x68><== NEVER TAKEN
   *  Signal Processing                                               
   */                                                                 
                                                                      
  asr = &api->Signal;                                                 
                                                                      
  _ISR_Disable( level );                                              
   4a370:	203c 0000 0700 	movel #1792,%d0                             
   4a376:	40c1           	movew %sr,%d1                               
   4a378:	8081           	orl %d1,%d0                                 
   4a37a:	46c0           	movew %d0,%sr                               
    signal_set = asr->signals_posted;                                 
   4a37c:	262a 0012      	movel %a2@(18),%d3                          
    asr->signals_posted = 0;                                          
   4a380:	42aa 0012      	clrl %a2@(18)                               
  _ISR_Enable( level );                                               
   4a384:	46c1           	movew %d1,%sr                               
                                                                      
                                                                      
  if ( !signal_set ) /* similar to _ASR_Are_signals_pending( asr ) */ 
   4a386:	4a83           	tstl %d3                                    
   4a388:	673a           	beqs 4a3c4 <_RTEMS_tasks_Post_switch_extension+0x68>
    return;                                                           
                                                                      
  asr->nest_level += 1;                                               
   4a38a:	52aa 001a      	addql #1,%a2@(26)                           
  rtems_task_mode( asr->mode_set, RTEMS_ALL_MODE_MASKS, &prev_mode ); 
   4a38e:	240e           	movel %fp,%d2                               
   4a390:	5982           	subql #4,%d2                                
   4a392:	47f9 0004 bc34 	lea 4bc34 <rtems_task_mode>,%a3             
   4a398:	2f02           	movel %d2,%sp@-                             
   4a39a:	2f3c 0000 ffff 	movel #65535,%sp@-                          
   4a3a0:	2f2a 000e      	movel %a2@(14),%sp@-                        
   4a3a4:	4e93           	jsr %a3@                                    
                                                                      
  (*asr->handler)( signal_set );                                      
   4a3a6:	2f03           	movel %d3,%sp@-                             
   4a3a8:	206a 000a      	moveal %a2@(10),%a0                         
   4a3ac:	4e90           	jsr %a0@                                    
                                                                      
  asr->nest_level -= 1;                                               
   4a3ae:	53aa 001a      	subql #1,%a2@(26)                           
  rtems_task_mode( prev_mode, RTEMS_ALL_MODE_MASKS, &prev_mode );     
   4a3b2:	2f02           	movel %d2,%sp@-                             
   4a3b4:	2f3c 0000 ffff 	movel #65535,%sp@-                          
   4a3ba:	2f2e fffc      	movel %fp@(-4),%sp@-                        
   4a3be:	4e93           	jsr %a3@                                    
   4a3c0:	4fef 001c      	lea %sp@(28),%sp                            
                                                                      
}                                                                     
   4a3c4:	4cee 0c0c ffec 	moveml %fp@(-20),%d2-%d3/%a2-%a3            
   4a3ca:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00047a84 <_Scheduler_EDF_Allocate>: #include <rtems/score/wkspace.h> void *_Scheduler_EDF_Allocate( Thread_Control *the_thread ) {
   47a84:	4e56 0000      	linkw %fp,#0                                
   47a88:	2f0a           	movel %a2,%sp@-                             
  void *sched;                                                        
  Scheduler_EDF_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
   47a8a:	4878 0018      	pea 18 <OPER2+0x4>                          
#include <rtems/score/wkspace.h>                                      
                                                                      
void *_Scheduler_EDF_Allocate(                                        
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
   47a8e:	246e 0008      	moveal %fp@(8),%a2                          
  void *sched;                                                        
  Scheduler_EDF_Per_thread *schinfo;                                  
                                                                      
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
   47a92:	4eb9 0004 924c 	jsr 4924c <_Workspace_Allocate>             
                                                                      
  if ( sched ) {                                                      
   47a98:	588f           	addql #4,%sp                                
   47a9a:	4a80           	tstl %d0                                    
   47a9c:	670e           	beqs 47aac <_Scheduler_EDF_Allocate+0x28>   <== NEVER TAKEN
    the_thread->scheduler_info = sched;                               
   47a9e:	2540 008a      	movel %d0,%a2@(138)                         
    schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
    schinfo->thread = the_thread;                                     
   47aa2:	2040           	moveal %d0,%a0                              
    schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;  
   47aa4:	7202           	moveq #2,%d1                                
  sched = _Workspace_Allocate( sizeof(Scheduler_EDF_Per_thread) );    
                                                                      
  if ( sched ) {                                                      
    the_thread->scheduler_info = sched;                               
    schinfo = (Scheduler_EDF_Per_thread *)(the_thread->scheduler_info);
    schinfo->thread = the_thread;                                     
   47aa6:	208a           	movel %a2,%a0@                              
    schinfo->queue_state = SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN;  
   47aa8:	2141 0014      	movel %d1,%a0@(20)                          
  }                                                                   
                                                                      
  return sched;                                                       
}                                                                     
   47aac:	246e fffc      	moveal %fp@(-4),%a2                         
   47ab0:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00047ab4 <_Scheduler_EDF_Block>: #include <rtems/score/thread.h> void _Scheduler_EDF_Block( Thread_Control *the_thread ) {
   47ab4:	4e56 0000      	linkw %fp,#0                                
   47ab8:	2f02           	movel %d2,%sp@-                             
   47aba:	242e 0008      	movel %fp@(8),%d2                           
  _Scheduler_EDF_Extract( the_thread );                               
   47abe:	2f02           	movel %d2,%sp@-                             
   47ac0:	4eb9 0004 7b2c 	jsr 47b2c <_Scheduler_EDF_Extract>          
                                                                      
  /* TODO: flash critical section? */                                 
                                                                      
  if ( _Thread_Is_heir( the_thread ) )                                
   47ac6:	588f           	addql #4,%sp                                
   47ac8:	b4b9 0005 ee58 	cmpl 5ee58 <_Per_CPU_Information+0x10>,%d2  
   47ace:	6606           	bnes 47ad6 <_Scheduler_EDF_Block+0x22>      <== NEVER TAKEN
    _Scheduler_EDF_Schedule();                                        
   47ad0:	4eb9 0004 7c4c 	jsr 47c4c <_Scheduler_EDF_Schedule>         
                                                                      
  if ( _Thread_Is_executing( the_thread ) )                           
   47ad6:	b4b9 0005 ee54 	cmpl 5ee54 <_Per_CPU_Information+0xc>,%d2   
   47adc:	6608           	bnes 47ae6 <_Scheduler_EDF_Block+0x32>      <== NEVER TAKEN
    _Thread_Dispatch_necessary = true;                                
   47ade:	7001           	moveq #1,%d0                                
   47ae0:	13c0 0005 ee60 	moveb %d0,5ee60 <_Per_CPU_Information+0x18> 
}                                                                     
   47ae6:	242e fffc      	movel %fp@(-4),%d2                          
   47aea:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00047b58 <_Scheduler_EDF_Free>: #include <rtems/score/wkspace.h> void _Scheduler_EDF_Free( Thread_Control *the_thread ) {
   47b58:	4e56 0000      	linkw %fp,#0                                
  _Workspace_Free( the_thread->scheduler_info );                      
   47b5c:	206e 0008      	moveal %fp@(8),%a0                          
   47b60:	2d68 008a 0008 	movel %a0@(138),%fp@(8)                     
}                                                                     
   47b66:	4e5e           	unlk %fp                                    
                                                                      
void _Scheduler_EDF_Free(                                             
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
  _Workspace_Free( the_thread->scheduler_info );                      
   47b68:	4ef9 0004 9268 	jmp 49268 <_Workspace_Free>                 
	...                                                                  
                                                                      

00047c10 <_Scheduler_EDF_Release_job>: void _Scheduler_EDF_Release_job( Thread_Control *the_thread, uint32_t deadline ) {
   47c10:	4e56 0000      	linkw %fp,#0                                
   47c14:	206e 0008      	moveal %fp@(8),%a0                          
   47c18:	202e 000c      	movel %fp@(12),%d0                          
  Priority_Control new_priority;                                      
                                                                      
  if (deadline) {                                                     
   47c1c:	670e           	beqs 47c2c <_Scheduler_EDF_Release_job+0x1c><== NEVER TAKEN
    /* Initializing or shifting deadline. */                          
    new_priority = (_Watchdog_Ticks_since_boot + deadline)            
   47c1e:	2239 0005 edc0 	movel 5edc0 <_Watchdog_Ticks_since_boot>,%d1
   47c24:	d081           	addl %d1,%d0                                
   47c26:	0880 001f      	bclr #31,%d0                                
   47c2a:	6004           	bras 47c30 <_Scheduler_EDF_Release_job+0x20>
                   & ~SCHEDULER_EDF_PRIO_MSB;                         
  }                                                                   
  else {                                                              
    /* Switch back to background priority. */                         
    new_priority = the_thread->Start.initial_priority;                
   47c2c:	2028 00ac      	movel %a0@(172),%d0                         <== NOT EXECUTED
  }                                                                   
                                                                      
  the_thread->real_priority = new_priority;                           
   47c30:	2140 0018      	movel %d0,%a0@(24)                          
  _Thread_Change_priority(the_thread, new_priority, true);            
   47c34:	4878 0001      	pea 1 <ADD>                                 
   47c38:	2f00           	movel %d0,%sp@-                             
   47c3a:	2f08           	movel %a0,%sp@-                             
   47c3c:	4eb9 0004 7f24 	jsr 47f24 <_Thread_Change_priority>         
   47c42:	4fef 000c      	lea %sp@(12),%sp                            
}                                                                     
   47c46:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00047c70 <_Scheduler_EDF_Unblock>: #include <rtems/score/scheduleredf.h> void _Scheduler_EDF_Unblock( Thread_Control *the_thread ) {
   47c70:	4e56 0000      	linkw %fp,#0                                
   47c74:	2f0a           	movel %a2,%sp@-                             
   47c76:	246e 0008      	moveal %fp@(8),%a2                          
  _Scheduler_EDF_Enqueue(the_thread);                                 
   47c7a:	2f0a           	movel %a2,%sp@-                             
   47c7c:	4eb9 0004 7afc 	jsr 47afc <_Scheduler_EDF_Enqueue>          
   47c82:	2f2a 0014      	movel %a2@(20),%sp@-                        
   *    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 ( _Scheduler_Is_priority_lower_than(                             
   47c86:	2079 0005 ee58 	moveal 5ee58 <_Per_CPU_Information+0x10>,%a0
   47c8c:	2f28 0014      	movel %a0@(20),%sp@-                        
   47c90:	2079 0005 d40e 	moveal 5d40e <_Scheduler+0x30>,%a0          
   47c96:	4e90           	jsr %a0@                                    
   47c98:	4fef 000c      	lea %sp@(12),%sp                            
   47c9c:	4a80           	tstl %d0                                    
   47c9e:	6c20           	bges 47cc0 <_Scheduler_EDF_Unblock+0x50>    
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
    if ( _Thread_Executing->is_preemptible ||                         
   47ca0:	2079 0005 ee54 	moveal 5ee54 <_Per_CPU_Information+0xc>,%a0 
   *    a pseudo-ISR system task, we need to do a context switch.     
   */                                                                 
  if ( _Scheduler_Is_priority_lower_than(                             
         _Thread_Heir->current_priority,                              
         the_thread->current_priority )) {                            
    _Thread_Heir = the_thread;                                        
   47ca6:	23ca 0005 ee58 	movel %a2,5ee58 <_Per_CPU_Information+0x10> 
    if ( _Thread_Executing->is_preemptible ||                         
   47cac:	4a28 0074      	tstb %a0@(116)                              
   47cb0:	6606           	bnes 47cb8 <_Scheduler_EDF_Unblock+0x48>    <== ALWAYS TAKEN
   47cb2:	4aaa 0014      	tstl %a2@(20)                               <== NOT EXECUTED
   47cb6:	6608           	bnes 47cc0 <_Scheduler_EDF_Unblock+0x50>    <== NOT EXECUTED
         the_thread->current_priority == 0 )                          
      _Thread_Dispatch_necessary = true;                              
   47cb8:	7001           	moveq #1,%d0                                
   47cba:	13c0 0005 ee60 	moveb %d0,5ee60 <_Per_CPU_Information+0x18> 
  }                                                                   
}                                                                     
   47cc0:	246e fffc      	moveal %fp@(-4),%a2                         
   47cc4:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00047cc8 <_Scheduler_EDF_Update>: { Scheduler_EDF_Per_thread *sched_info = (Scheduler_EDF_Per_thread*)the_thread->scheduler_info; RBTree_Node *the_node = &(sched_info->Node); if (sched_info->queue_state == SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN) {
   47cc8:	7002           	moveq #2,%d0                                
#include <rtems/score/thread.h>                                       
                                                                      
void _Scheduler_EDF_Update(                                           
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
   47cca:	4e56 0000      	linkw %fp,#0                                
   47cce:	2f0a           	movel %a2,%sp@-                             
   47cd0:	246e 0008      	moveal %fp@(8),%a2                          
  Scheduler_EDF_Per_thread *sched_info =                              
   47cd4:	206a 008a      	moveal %a2@(138),%a0                        
#include <rtems/score/thread.h>                                       
                                                                      
void _Scheduler_EDF_Update(                                           
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
   47cd8:	2f02           	movel %d2,%sp@-                             
  Scheduler_EDF_Per_thread *sched_info =                              
    (Scheduler_EDF_Per_thread*)the_thread->scheduler_info;            
  RBTree_Node *the_node = &(sched_info->Node);                        
                                                                      
  if (sched_info->queue_state == SCHEDULER_EDF_QUEUE_STATE_NEVER_HAS_BEEN) {
   47cda:	b0a8 0014      	cmpl %a0@(20),%d0                           
   47cde:	6618           	bnes 47cf8 <_Scheduler_EDF_Update+0x30>     
    /* Shifts the priority to the region of background tasks. */      
    the_thread->Start.initial_priority |= (SCHEDULER_EDF_PRIO_MSB);   
   47ce0:	202a 00ac      	movel %a2@(172),%d0                         
   47ce4:	08c0 001f      	bset #31,%d0                                
   47ce8:	2540 00ac      	movel %d0,%a2@(172)                         
    the_thread->real_priority    = the_thread->Start.initial_priority;
   47cec:	2540 0018      	movel %d0,%a2@(24)                          
    the_thread->current_priority = the_thread->Start.initial_priority;
   47cf0:	2540 0014      	movel %d0,%a2@(20)                          
    sched_info->queue_state = SCHEDULER_EDF_QUEUE_STATE_NOT_PRESENTLY;
   47cf4:	42a8 0014      	clrl %a0@(20)                               
  }                                                                   
                                                                      
  if ( sched_info->queue_state == SCHEDULER_EDF_QUEUE_STATE_YES ) {   
   47cf8:	7001           	moveq #1,%d0                                
   47cfa:	b0a8 0014      	cmpl %a0@(20),%d0                           
   47cfe:	664c           	bnes 47d4c <_Scheduler_EDF_Update+0x84>     <== ALWAYS TAKEN
  Thread_Control      *the_thread                                     
)                                                                     
{                                                                     
  Scheduler_EDF_Per_thread *sched_info =                              
    (Scheduler_EDF_Per_thread*)the_thread->scheduler_info;            
  RBTree_Node *the_node = &(sched_info->Node);                        
   47d00:	2408           	movel %a0,%d2                               <== NOT EXECUTED
   47d02:	5882           	addql #4,%d2                                <== NOT EXECUTED
    the_thread->current_priority = the_thread->Start.initial_priority;
    sched_info->queue_state = SCHEDULER_EDF_QUEUE_STATE_NOT_PRESENTLY;
  }                                                                   
                                                                      
  if ( sched_info->queue_state == SCHEDULER_EDF_QUEUE_STATE_YES ) {   
    _RBTree_Extract(&_Scheduler_EDF_Ready_queue, the_node);           
   47d04:	2f02           	movel %d2,%sp@-                             <== NOT EXECUTED
   47d06:	4879 0005 ee6a 	pea 5ee6a <_Scheduler_EDF_Ready_queue>      <== NOT EXECUTED
   47d0c:	4eb9 0004 b44c 	jsr 4b44c <_RBTree_Extract>                 <== NOT EXECUTED
    _RBTree_Insert(&_Scheduler_EDF_Ready_queue, the_node);            
   47d12:	2f02           	movel %d2,%sp@-                             <== NOT EXECUTED
   47d14:	4879 0005 ee6a 	pea 5ee6a <_Scheduler_EDF_Ready_queue>      <== NOT EXECUTED
   47d1a:	4eb9 0004 b610 	jsr 4b610 <_RBTree_Insert>                  <== NOT EXECUTED
                                                                      
    _Scheduler_EDF_Schedule();                                        
   47d20:	4eb9 0004 7c4c 	jsr 47c4c <_Scheduler_EDF_Schedule>         <== NOT EXECUTED
    if ( _Thread_Executing != _Thread_Heir ) {                        
   47d26:	2079 0005 ee54 	moveal 5ee54 <_Per_CPU_Information+0xc>,%a0 <== NOT EXECUTED
   47d2c:	4fef 0010      	lea %sp@(16),%sp                            <== NOT EXECUTED
   47d30:	b1f9 0005 ee58 	cmpal 5ee58 <_Per_CPU_Information+0x10>,%a0 <== NOT EXECUTED
   47d36:	6714           	beqs 47d4c <_Scheduler_EDF_Update+0x84>     <== NOT EXECUTED
      if ( _Thread_Executing->is_preemptible ||                       
   47d38:	4a28 0074      	tstb %a0@(116)                              <== NOT EXECUTED
   47d3c:	6606           	bnes 47d44 <_Scheduler_EDF_Update+0x7c>     <== NOT EXECUTED
   47d3e:	4aaa 0014      	tstl %a2@(20)                               <== NOT EXECUTED
   47d42:	6608           	bnes 47d4c <_Scheduler_EDF_Update+0x84>     <== NOT EXECUTED
           the_thread->current_priority == 0 )                        
        _Thread_Dispatch_necessary = true;                            
   47d44:	7001           	moveq #1,%d0                                <== NOT EXECUTED
   47d46:	13c0 0005 ee60 	moveb %d0,5ee60 <_Per_CPU_Information+0x18> <== NOT EXECUTED
    }                                                                 
  }                                                                   
}                                                                     
   47d4c:	242e fff8      	movel %fp@(-8),%d2                          
   47d50:	246e fffc      	moveal %fp@(-4),%a2                         
   47d54:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00047d58 <_Scheduler_EDF_Yield>: Thread_Control *executing = _Thread_Executing; Scheduler_EDF_Per_thread *executing_info = (Scheduler_EDF_Per_thread *) executing->scheduler_info; RBTree_Node *executing_node = &(executing_info->Node); _ISR_Disable( level );
   47d58:	203c 0000 0700 	movel #1792,%d0                             <== NOT EXECUTED
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/scheduleredf.h>                                 
#include <rtems/score/thread.h>                                       
                                                                      
void _Scheduler_EDF_Yield(void)                                       
{                                                                     
   47d5e:	4e56 fff4      	linkw %fp,#-12                              <== NOT EXECUTED
   47d62:	48d7 040c      	moveml %d2-%d3/%a2,%sp@                     <== NOT EXECUTED
  Scheduler_EDF_Per_thread *first_info;                               
  RBTree_Node              *first_node;                               
  ISR_Level                 level;                                    
                                                                      
  Thread_Control *executing  = _Thread_Executing;                     
   47d66:	2479 0005 ee54 	moveal 5ee54 <_Per_CPU_Information+0xc>,%a2 <== NOT EXECUTED
  Scheduler_EDF_Per_thread *executing_info =                          
   47d6c:	262a 008a      	movel %a2@(138),%d3                         <== NOT EXECUTED
    (Scheduler_EDF_Per_thread *) executing->scheduler_info;           
  RBTree_Node *executing_node = &(executing_info->Node);              
                                                                      
  _ISR_Disable( level );                                              
   47d70:	40c2           	movew %sr,%d2                               <== NOT EXECUTED
   47d72:	8082           	orl %d2,%d0                                 <== NOT EXECUTED
   47d74:	46c0           	movew %d0,%sr                               <== NOT EXECUTED
RTEMS_INLINE_ROUTINE bool _RBTree_Has_only_one_node(                  
    const RBTree_Control *the_rbtree                                  
    )                                                                 
{                                                                     
  if(!the_rbtree) return NULL; /* TODO: expected behavior? */         
  return (the_rbtree->root->child[RBT_LEFT] == NULL && the_rbtree->root->child[RBT_RIGHT] == NULL);
   47d76:	2079 0005 ee6e 	moveal 5ee6e <_Scheduler_EDF_Ready_queue+0x4>,%a0<== NOT EXECUTED
   47d7c:	4aa8 0004      	tstl %a0@(4)                                <== NOT EXECUTED
   47d80:	660c           	bnes 47d8e <_Scheduler_EDF_Yield+0x36>      <== NOT EXECUTED
#include <rtems/score/isr.h>                                          
#include <rtems/score/scheduler.h>                                    
#include <rtems/score/scheduleredf.h>                                 
#include <rtems/score/thread.h>                                       
                                                                      
void _Scheduler_EDF_Yield(void)                                       
   47d82:	4aa8 0008      	tstl %a0@(8)                                <== NOT EXECUTED
   47d86:	57c0           	seq %d0                                     <== NOT EXECUTED
   47d88:	49c0           	extbl %d0                                   <== NOT EXECUTED
   47d8a:	4480           	negl %d0                                    <== NOT EXECUTED
   47d8c:	6002           	bras 47d90 <_Scheduler_EDF_Yield+0x38>      <== NOT EXECUTED
   47d8e:	4280           	clrl %d0                                    <== NOT EXECUTED
    (Scheduler_EDF_Per_thread *) executing->scheduler_info;           
  RBTree_Node *executing_node = &(executing_info->Node);              
                                                                      
  _ISR_Disable( level );                                              
                                                                      
  if ( !_RBTree_Has_only_one_node(&_Scheduler_EDF_Ready_queue) ) {    
   47d90:	4a00           	tstb %d0                                    <== NOT EXECUTED
   47d92:	6652           	bnes 47de6 <_Scheduler_EDF_Yield+0x8e>      <== NOT EXECUTED
  ISR_Level                 level;                                    
                                                                      
  Thread_Control *executing  = _Thread_Executing;                     
  Scheduler_EDF_Per_thread *executing_info =                          
    (Scheduler_EDF_Per_thread *) executing->scheduler_info;           
  RBTree_Node *executing_node = &(executing_info->Node);              
   47d94:	5883           	addql #4,%d3                                <== NOT EXECUTED
  if ( !_RBTree_Has_only_one_node(&_Scheduler_EDF_Ready_queue) ) {    
    /*                                                                
     * The RBTree has more than one node, enqueue behind the tasks    
     * with the same priority in case there are such ones.            
     */                                                               
    _RBTree_Extract( &_Scheduler_EDF_Ready_queue, executing_node );   
   47d96:	2f03           	movel %d3,%sp@-                             <== NOT EXECUTED
   47d98:	4879 0005 ee6a 	pea 5ee6a <_Scheduler_EDF_Ready_queue>      <== NOT EXECUTED
   47d9e:	4eb9 0004 b44c 	jsr 4b44c <_RBTree_Extract>                 <== NOT EXECUTED
    _RBTree_Insert( &_Scheduler_EDF_Ready_queue, executing_node );    
   47da4:	2f03           	movel %d3,%sp@-                             <== NOT EXECUTED
   47da6:	4879 0005 ee6a 	pea 5ee6a <_Scheduler_EDF_Ready_queue>      <== NOT EXECUTED
   47dac:	4eb9 0004 b610 	jsr 4b610 <_RBTree_Insert>                  <== NOT EXECUTED
                                                                      
    _ISR_Flash( level );                                              
   47db2:	203c 0000 0700 	movel #1792,%d0                             <== NOT EXECUTED
   47db8:	46c2           	movew %d2,%sr                               <== NOT EXECUTED
   47dba:	8082           	orl %d2,%d0                                 <== NOT EXECUTED
   47dbc:	46c0           	movew %d0,%sr                               <== NOT EXECUTED
                                                                      
    if ( _Thread_Is_heir( executing ) ) {                             
   47dbe:	4fef 0010      	lea %sp@(16),%sp                            <== NOT EXECUTED
   47dc2:	b5f9 0005 ee58 	cmpal 5ee58 <_Per_CPU_Information+0x10>,%a2 <== NOT EXECUTED
   47dc8:	6624           	bnes 47dee <_Scheduler_EDF_Yield+0x96>      <== NOT EXECUTED
      first_node = _RBTree_Peek( &_Scheduler_EDF_Ready_queue, RBT_LEFT );
   47dca:	42a7           	clrl %sp@-                                  <== NOT EXECUTED
   47dcc:	4879 0005 ee6a 	pea 5ee6a <_Scheduler_EDF_Ready_queue>      <== NOT EXECUTED
   47dd2:	4eb9 0004 b63c 	jsr 4b63c <_RBTree_Peek>                    <== NOT EXECUTED
      first_info =                                                    
        _RBTree_Container_of(first_node, Scheduler_EDF_Per_thread, Node);
      _Thread_Heir = first_info->thread;                              
   47dd8:	508f           	addql #8,%sp                                <== NOT EXECUTED
   47dda:	2040           	moveal %d0,%a0                              <== NOT EXECUTED
   47ddc:	5988           	subql #4,%a0                                <== NOT EXECUTED
   47dde:	23d0 0005 ee58 	movel %a0@,5ee58 <_Per_CPU_Information+0x10><== NOT EXECUTED
   47de4:	6008           	bras 47dee <_Scheduler_EDF_Yield+0x96>      <== NOT EXECUTED
    }                                                                 
    _Thread_Dispatch_necessary = true;                                
  }                                                                   
  else if ( !_Thread_Is_heir( executing ) )                           
   47de6:	b5f9 0005 ee58 	cmpal 5ee58 <_Per_CPU_Information+0x10>,%a2 <== NOT EXECUTED
   47dec:	6708           	beqs 47df6 <_Scheduler_EDF_Yield+0x9e>      <== NOT EXECUTED
    _Thread_Dispatch_necessary = true;                                
   47dee:	7001           	moveq #1,%d0                                <== NOT EXECUTED
   47df0:	13c0 0005 ee60 	moveb %d0,5ee60 <_Per_CPU_Information+0x18> <== NOT EXECUTED
                                                                      
  _ISR_Enable( level );                                               
   47df6:	46c2           	movew %d2,%sr                               <== NOT EXECUTED
}                                                                     
   47df8:	4cee 040c fff4 	moveml %fp@(-12),%d2-%d3/%a2                <== NOT EXECUTED
   47dfe:	4e5e           	unlk %fp                                    <== NOT EXECUTED
	...                                                                  
                                                                      

000473a8 <_Scheduler_Handler_initialization>: #include <rtems/system.h> #include <rtems/config.h> #include <rtems/score/scheduler.h> void _Scheduler_Handler_initialization(void) {
   473a8:	4e56 0000      	linkw %fp,#0                                
  (*_Scheduler.Operations.initialize)();                              
}                                                                     
   473ac:	4e5e           	unlk %fp                                    
#include <rtems/config.h>                                             
#include <rtems/score/scheduler.h>                                    
                                                                      
void _Scheduler_Handler_initialization(void)                          
{                                                                     
  (*_Scheduler.Operations.initialize)();                              
   473ae:	2279 0005 bfb2 	moveal 5bfb2 <_Scheduler+0x4>,%a1           
   473b4:	4ed1           	jmp %a1@                                    
	...                                                                  
                                                                      

00047580 <_Scheduler_priority_Free>: #include <rtems/score/wkspace.h> void _Scheduler_priority_Free ( Thread_Control *the_thread ) {
   47580:	4e56 0000      	linkw %fp,#0                                
  _Workspace_Free( the_thread->scheduler_info );                      
   47584:	206e 0008      	moveal %fp@(8),%a0                          
   47588:	2d68 008a 0008 	movel %a0@(138),%fp@(8)                     
}                                                                     
   4758e:	4e5e           	unlk %fp                                    
                                                                      
void _Scheduler_priority_Free (                                       
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Workspace_Free( the_thread->scheduler_info );                      
   47590:	4ef9 0004 8b3c 	jmp 48b3c <_Workspace_Free>                 
	...                                                                  
                                                                      

000461e4 <_TOD_Validate>: */ bool _TOD_Validate( const rtems_time_of_day *the_tod ) {
   461e4:	4e56 0000      	linkw %fp,#0                                
   461e8:	206e 0008      	moveal %fp@(8),%a0                          
   461ec:	2f03           	movel %d3,%sp@-                             
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
   461ee:	2039 0005 dcd8 	movel 5dcd8 <Configuration+0xc>,%d0         
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
  const rtems_time_of_day *the_tod                                    
)                                                                     
{                                                                     
   461f4:	2f02           	movel %d2,%sp@-                             
  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)                                  ||                  
   461f6:	4a88           	tstl %a0                                    
   461f8:	6762           	beqs 4625c <_TOD_Validate+0x78>             <== NEVER TAKEN
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
   461fa:	243c 000f 4240 	movel #1000000,%d2                          
   46200:	4c40 2002      	remul %d0,%d2,%d2                           
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
   46204:	b4a8 0018      	cmpl %a0@(24),%d2                           
   46208:	6352           	blss 4625c <_TOD_Validate+0x78>             
      (the_tod->ticks  >= ticks_per_second)       ||                  
   4620a:	763b           	moveq #59,%d3                               
   4620c:	b6a8 0014      	cmpl %a0@(20),%d3                           
   46210:	654a           	bcss 4625c <_TOD_Validate+0x78>             
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
   46212:	b6a8 0010      	cmpl %a0@(16),%d3                           
   46216:	6544           	bcss 4625c <_TOD_Validate+0x78>             
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
   46218:	7017           	moveq #23,%d0                               
   4621a:	b0a8 000c      	cmpl %a0@(12),%d0                           
   4621e:	653c           	bcss 4625c <_TOD_Validate+0x78>             
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
   46220:	2028 0004      	movel %a0@(4),%d0                           
	    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)      ||                  
   46224:	6736           	beqs 4625c <_TOD_Validate+0x78>             <== NEVER TAKEN
      (the_tod->month  == 0)                      ||                  
   46226:	720c           	moveq #12,%d1                               
   46228:	b280           	cmpl %d0,%d1                                
   4622a:	6530           	bcss 4625c <_TOD_Validate+0x78>             
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
   4622c:	2410           	movel %a0@,%d2                              
      (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)    ||                  
   4622e:	0c82 0000 07c3 	cmpil #1987,%d2                             
   46234:	6326           	blss 4625c <_TOD_Validate+0x78>             
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
   46236:	2228 0008      	movel %a0@(8),%d1                           
      (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)          ||                  
   4623a:	6720           	beqs 4625c <_TOD_Validate+0x78>             <== NEVER TAKEN
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
   4623c:	163c 0003      	moveb #3,%d3                                
   46240:	41f9 0005 cf28 	lea 5cf28 <_TOD_Days_per_month>,%a0         
   46246:	c483           	andl %d3,%d2                                
   46248:	6606           	bnes 46250 <_TOD_Validate+0x6c>             
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
   4624a:	2030 0c34      	movel %a0@(00000034,%d0:l:4),%d0            
   4624e:	6004           	bras 46254 <_TOD_Validate+0x70>             
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
   46250:	2030 0c00      	movel %a0@(00000000,%d0:l:4),%d0            
 *    false - if the the_tod is invalid                               
 *                                                                    
 *  NOTE: This routine only works for leap-years through 2099.        
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
   46254:	b081           	cmpl %d1,%d0                                
   46256:	54c0           	scc %d0                                     
   46258:	4480           	negl %d0                                    
   4625a:	6002           	bras 4625e <_TOD_Validate+0x7a>             
      (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;                                                    
   4625c:	4200           	clrb %d0                                    
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
   4625e:	241f           	movel %sp@+,%d2                             
   46260:	261f           	movel %sp@+,%d3                             
   46262:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00047878 <_Thread_Change_priority>: void _Thread_Change_priority( Thread_Control *the_thread, Priority_Control new_priority, bool prepend_it ) {
   47878:	4e56 fff0      	linkw %fp,#-16                              
   4787c:	48d7 041c      	moveml %d2-%d4/%a2,%sp@                     
   47880:	246e 0008      	moveal %fp@(8),%a2                          
  States_Control state, original_state;                               
                                                                      
  /*                                                                  
   * Save original state                                              
   */                                                                 
  original_state = the_thread->current_state;                         
   47884:	282a 0010      	movel %a2@(16),%d4                          
void _Thread_Change_priority(                                         
  Thread_Control   *the_thread,                                       
  Priority_Control  new_priority,                                     
  bool              prepend_it                                        
)                                                                     
{                                                                     
   47888:	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 );                                
   4788c:	2f0a           	movel %a2,%sp@-                             
void _Thread_Change_priority(                                         
  Thread_Control   *the_thread,                                       
  Priority_Control  new_priority,                                     
  bool              prepend_it                                        
)                                                                     
{                                                                     
   4788e:	162e 0013      	moveb %fp@(19),%d3                          
  /*                                                                  
   * Set a transient state for the thread so it is pulled off the Ready chains.
   * This will prevent it from being scheduled no matter what happens in an
   * ISR.                                                             
   */                                                                 
  _Thread_Set_transient( the_thread );                                
   47892:	4eb9 0004 8464 	jsr 48464 <_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 )                  
   47898:	588f           	addql #4,%sp                                
   4789a:	b4aa 0014      	cmpl %a2@(20),%d2                           
   4789e:	670c           	beqs 478ac <_Thread_Change_priority+0x34>   
    _Thread_Set_priority( the_thread, new_priority );                 
   478a0:	2f02           	movel %d2,%sp@-                             
   478a2:	2f0a           	movel %a2,%sp@-                             
   478a4:	4eb9 0004 8408 	jsr 48408 <_Thread_Set_priority>            
   478aa:	508f           	addql #8,%sp                                
                                                                      
  _ISR_Disable( level );                                              
   478ac:	203c 0000 0700 	movel #1792,%d0                             
   478b2:	40c2           	movew %sr,%d2                               
   478b4:	8082           	orl %d2,%d0                                 
   478b6:	46c0           	movew %d0,%sr                               
   478b8:	7204           	moveq #4,%d1                                
                                                                      
  /*                                                                  
   *  If the thread has more than STATES_TRANSIENT set, then it is blocked,
   *  If it is blocked on a thread queue, then we need to requeue it. 
   */                                                                 
  state = the_thread->current_state;                                  
   478ba:	202a 0010      	movel %a2@(16),%d0                          
   478be:	c284           	andl %d4,%d1                                
  if ( state != STATES_TRANSIENT ) {                                  
   478c0:	7804           	moveq #4,%d4                                
   478c2:	b880           	cmpl %d0,%d4                                
   478c4:	672e           	beqs 478f4 <_Thread_Change_priority+0x7c>   
    /* Only clear the transient state if it wasn't set already */     
    if ( ! _States_Is_transient( original_state ) )                   
   478c6:	4a81           	tstl %d1                                    
   478c8:	6608           	bnes 478d2 <_Thread_Change_priority+0x5a>   <== NEVER TAKEN
RTEMS_INLINE_ROUTINE States_Control _States_Clear (                   
  States_Control states_to_clear,                                     
  States_Control current_state                                        
)                                                                     
{                                                                     
   return (current_state & ~states_to_clear);                         
   478ca:	72fb           	moveq #-5,%d1                               
   478cc:	c280           	andl %d0,%d1                                
   478ce:	2541 0010      	movel %d1,%a2@(16)                          
      the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
    _ISR_Enable( level );                                             
   478d2:	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);              
   478d4:	0280 0003 bee0 	andil #245472,%d0                           
    if ( _States_Is_waiting_on_thread_queue( state ) ) {              
   478da:	676c           	beqs 47948 <_Thread_Change_priority+0xd0>   
      _Thread_queue_Requeue( the_thread->Wait.queue, the_thread );    
   478dc:	2d4a 000c      	movel %a2,%fp@(12)                          
   478e0:	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 );                                               
}                                                                     
   478e6:	4cee 041c fff0 	moveml %fp@(-16),%d2-%d4/%a2                
   478ec:	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 );    
   478ee:	4ef9 0004 8368 	jmp 48368 <_Thread_queue_Requeue>           
    }                                                                 
    return;                                                           
  }                                                                   
                                                                      
  /* Only clear the transient state if it wasn't set already */       
  if ( ! _States_Is_transient( original_state ) ) {                   
   478f4:	4a81           	tstl %d1                                    
   478f6:	661e           	bnes 47916 <_Thread_Change_priority+0x9e>   <== NEVER TAKEN
     *  Interrupts are STILL disabled.                                
     *  We now know the thread will be in the READY state when we remove
     *  the TRANSIENT state.  So we have to place it on the appropriate
     *  Ready Queue with interrupts off.                              
     */                                                               
    the_thread->current_state = _States_Clear( STATES_TRANSIENT, state );
   478f8:	42aa 0010      	clrl %a2@(16)                               
                                                                      
    if ( prepend_it )                                                 
   478fc:	4a03           	tstb %d3                                    
   478fe:	670a           	beqs 4790a <_Thread_Change_priority+0x92>   
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue_first(                   
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue_first( the_thread );                  
   47900:	2f0a           	movel %a2,%sp@-                             
   47902:	2079 0005 bfd6 	moveal 5bfd6 <_Scheduler+0x28>,%a0          
   47908:	6008           	bras 47912 <_Thread_Change_priority+0x9a>   
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Enqueue(                         
  Thread_Control    *the_thread                                       
)                                                                     
{                                                                     
  _Scheduler.Operations.enqueue( the_thread );                        
   4790a:	2079 0005 bfd2 	moveal 5bfd2 <_Scheduler+0x24>,%a0          
   47910:	2f0a           	movel %a2,%sp@-                             
   47912:	4e90           	jsr %a0@                                    
   47914:	588f           	addql #4,%sp                                
      _Scheduler_Enqueue_first( the_thread );                         
    else                                                              
      _Scheduler_Enqueue( the_thread );                               
  }                                                                   
                                                                      
  _ISR_Flash( level );                                                
   47916:	203c 0000 0700 	movel #1792,%d0                             
   4791c:	46c2           	movew %d2,%sr                               
   4791e:	8082           	orl %d2,%d0                                 
   47920:	46c0           	movew %d0,%sr                               
 *  This kernel routine implements the scheduling decision logic for  
 *  the scheduler. It does NOT dispatch.                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Scheduler_Schedule( void )                 
{                                                                     
  _Scheduler.Operations.schedule();                                   
   47922:	2079 0005 bfb6 	moveal 5bfb6 <_Scheduler+0x8>,%a0           
   47928:	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 );                       
   4792a:	2079 0005 d9bc 	moveal 5d9bc <_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();                                              
                                                                      
  if ( !_Thread_Is_executing_also_the_heir() &&                       
   47930:	b1f9 0005 d9c0 	cmpal 5d9c0 <_Per_CPU_Information+0x10>,%a0 
   47936:	670e           	beqs 47946 <_Thread_Change_priority+0xce>   
   47938:	4a28 0074      	tstb %a0@(116)                              
   4793c:	6708           	beqs 47946 <_Thread_Change_priority+0xce>   
       _Thread_Executing->is_preemptible )                            
    _Thread_Dispatch_necessary = true;                                
   4793e:	7801           	moveq #1,%d4                                
   47940:	13c4 0005 d9c8 	moveb %d4,5d9c8 <_Per_CPU_Information+0x18> 
  _ISR_Enable( level );                                               
   47946:	46c2           	movew %d2,%sr                               
}                                                                     
   47948:	4cee 041c fff0 	moveml %fp@(-16),%d2-%d4/%a2                
   4794e:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00047b2c <_Thread_Delay_ended>: void _Thread_Delay_ended( Objects_Id id, void *ignored __attribute__((unused)) ) {
   47b2c:	4e56 fffc      	linkw %fp,#-4                               
  Thread_Control    *the_thread;                                      
  Objects_Locations  location;                                        
                                                                      
  the_thread = _Thread_Get( id, &location );                          
   47b30:	486e fffc      	pea %fp@(-4)                                
   47b34:	2f2e 0008      	movel %fp@(8),%sp@-                         
   47b38:	4eb9 0004 7cf0 	jsr 47cf0 <_Thread_Get>                     
  switch ( location ) {                                               
   47b3e:	508f           	addql #8,%sp                                
   47b40:	4aae fffc      	tstl %fp@(-4)                               
   47b44:	6624           	bnes 47b6a <_Thread_Delay_ended+0x3e>       <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_Clear_state(                                            
   47b46:	2f3c 1000 0018 	movel #268435480,%sp@-                      
   47b4c:	2f00           	movel %d0,%sp@-                             
   47b4e:	4eb9 0004 7954 	jsr 47954 <_Thread_Clear_state>             
   47b54:	508f           	addql #8,%sp                                
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level--;                                 
   47b56:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   47b5c:	5380           	subql #1,%d0                                
   47b5e:	23c0 0005 d828 	movel %d0,5d828 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   47b64:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
          | STATES_INTERRUPTIBLE_BY_SIGNAL                            
      );                                                              
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
   47b6a:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00047b70 <_Thread_Dispatch>: * INTERRUPT LATENCY: * dispatch thread * no dispatch thread */ void _Thread_Dispatch( void ) {
   47b70:	4e56 ffd0      	linkw %fp,#-48                              
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level++;                                 
   47b74:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   47b7a:	5280           	addql #1,%d0                                
   47b7c:	23c0 0005 d828 	movel %d0,5d828 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   47b82:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   47b88:	48d7 3c3c      	moveml %d2-%d5/%a2-%a5,%sp@                 
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
   47b8c:	223c 0000 0700 	movel #1792,%d1                             
  #endif                                                              
                                                                      
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
   47b92:	2479 0005 d9bc 	moveal 5d9bc <_Per_CPU_Information+0xc>,%a2 
  _ISR_Disable( level );                                              
   47b98:	40c0           	movew %sr,%d0                               
   47b9a:	8280           	orl %d0,%d1                                 
   47b9c:	46c1           	movew %d1,%sr                               
    _ISR_Enable( level );                                             
                                                                      
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      {                                                               
        Timestamp_Control uptime, ran;                                
        _TOD_Get_uptime( &uptime );                                   
   47b9e:	260e           	movel %fp,%d3                               
        _Timestamp_Subtract(                                          
   47ba0:	240e           	movel %fp,%d2                               
    _ISR_Enable( level );                                             
                                                                      
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      {                                                               
        Timestamp_Control uptime, ran;                                
        _TOD_Get_uptime( &uptime );                                   
   47ba2:	0683 ffff fff0 	addil #-16,%d3                              
   47ba8:	2a3c 0004 a6c8 	movel #304840,%d5                           
        _Timestamp_Subtract(                                          
   47bae:	5182           	subql #8,%d2                                
   47bb0:	283c 0004 85ec 	movel #296428,%d4                           
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
   47bb6:	4bf9 0004 85b4 	lea 485b4 <_Timespec_Add_to>,%a5            
    if ( _Thread_libc_reent ) {                                       
      executing->libc_reent = *_Thread_libc_reent;                    
      *_Thread_libc_reent = heir->libc_reent;                         
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
   47bbc:	49f9 0004 886c 	lea 4886c <_User_extensions_Thread_switch>,%a4
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
   47bc2:	6000 00d2      	braw 47c96 <_Thread_Dispatch+0x126>         
                                                                      
    heir = _Thread_Heir;                                              
   47bc6:	2679 0005 d9c0 	moveal 5d9c0 <_Per_CPU_Information+0x10>,%a3
    _Thread_Dispatch_necessary = false;                               
   47bcc:	4201           	clrb %d1                                    
    _Thread_Executing = heir;                                         
   47bce:	23cb 0005 d9bc 	movel %a3,5d9bc <_Per_CPU_Information+0xc>  
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
                                                                      
    heir = _Thread_Heir;                                              
    _Thread_Dispatch_necessary = false;                               
   47bd4:	13c1 0005 d9c8 	moveb %d1,5d9c8 <_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 )                                          
   47bda:	b5cb           	cmpal %a3,%a2                               
   47bdc:	6700 00c2      	beqw 47ca0 <_Thread_Dispatch+0x130>         
     */                                                               
#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 )
   47be0:	7201           	moveq #1,%d1                                
   47be2:	b2ab 007a      	cmpl %a3@(122),%d1                          
   47be6:	660a           	bnes 47bf2 <_Thread_Dispatch+0x82>          
      heir->cpu_time_budget = _Thread_Ticks_per_timeslice;            
   47be8:	41f9 0005 d7e0 	lea 5d7e0 <_Thread_Ticks_per_timeslice>,%a0 
   47bee:	2750 0076      	movel %a0@,%a3@(118)                        
                                                                      
    _ISR_Enable( level );                                             
   47bf2:	46c0           	movew %d0,%sr                               
                                                                      
    #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                        
      {                                                               
        Timestamp_Control uptime, ran;                                
        _TOD_Get_uptime( &uptime );                                   
   47bf4:	2f03           	movel %d3,%sp@-                             
   47bf6:	2045           	moveal %d5,%a0                              
   47bf8:	4e90           	jsr %a0@                                    
        _Timestamp_Subtract(                                          
   47bfa:	2044           	moveal %d4,%a0                              
   47bfc:	2f02           	movel %d2,%sp@-                             
   47bfe:	2f03           	movel %d3,%sp@-                             
   47c00:	4879 0005 d9ca 	pea 5d9ca <_Per_CPU_Information+0x1a>       
   47c06:	4e90           	jsr %a0@                                    
          &_Thread_Time_of_last_context_switch,                       
          &uptime,                                                    
          &ran                                                        
        );                                                            
        _Timestamp_Add_to( &executing->cpu_time_used, &ran );         
   47c08:	2f02           	movel %d2,%sp@-                             
   47c0a:	486a 0082      	pea %a2@(130)                               
   47c0e:	4e95           	jsr %a5@                                    
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
   47c10:	2079 0005 d8ae 	moveal 5d8ae <_Thread_libc_reent>,%a0       
   47c16:	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;                 
   47c1a:	202e fff0      	movel %fp@(-16),%d0                         
   47c1e:	222e fff4      	movel %fp@(-12),%d1                         
   47c22:	23c0 0005 d9ca 	movel %d0,5d9ca <_Per_CPU_Information+0x1a> 
   47c28:	23c1 0005 d9ce 	movel %d1,5d9ce <_Per_CPU_Information+0x1e> 
    #endif                                                            
                                                                      
    /*                                                                
     * Switch libc's task specific data.                              
     */                                                               
    if ( _Thread_libc_reent ) {                                       
   47c2e:	4a88           	tstl %a0                                    
   47c30:	6708           	beqs 47c3a <_Thread_Dispatch+0xca>          <== NEVER TAKEN
      executing->libc_reent = *_Thread_libc_reent;                    
   47c32:	2550 00f8      	movel %a0@,%a2@(248)                        
      *_Thread_libc_reent = heir->libc_reent;                         
   47c36:	20ab 00f8      	movel %a3@(248),%a0@                        
    }                                                                 
                                                                      
    _User_extensions_Thread_switch( executing, heir );                
   47c3a:	2f0b           	movel %a3,%sp@-                             
   47c3c:	2f0a           	movel %a2,%sp@-                             
   47c3e:	4e94           	jsr %a4@                                    
    if ( executing->fp_context != NULL )                              
      _Context_Save_fp( &executing->fp_context );                     
#endif                                                                
#endif                                                                
                                                                      
    _Context_Switch( &executing->Registers, &heir->Registers );       
   47c40:	486b 00c0      	pea %a3@(192)                               
   47c44:	486a 00c0      	pea %a2@(192)                               
   47c48:	4eb9 0004 8b8c 	jsr 48b8c <_CPU_Context_switch>             
                                                                      
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
#if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )                            
    if ( (executing->fp_context != NULL) &&                           
   47c4e:	4fef 0010      	lea %sp@(16),%sp                            
   47c52:	4aaa 00f4      	tstl %a2@(244)                              
   47c56:	672c           	beqs 47c84 <_Thread_Dispatch+0x114>         
#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 );                      
   47c58:	2079 0005 d8aa 	moveal 5d8aa <_Thread_Allocated_fp>,%a0     
   47c5e:	b1ca           	cmpal %a2,%a0                               
   47c60:	6722           	beqs 47c84 <_Thread_Dispatch+0x114>         
         !_Thread_Is_allocated_fp( executing ) ) {                    
      if ( _Thread_Allocated_fp != NULL )                             
   47c62:	4a88           	tstl %a0                                    
   47c64:	670c           	beqs 47c72 <_Thread_Dispatch+0x102>         
        _Context_Save_fp( &_Thread_Allocated_fp->fp_context );        
   47c66:	4868 00f4      	pea %a0@(244)                               
   47c6a:	4eb9 0004 8cd2 	jsr 48cd2 <_CPU_Context_save_fp>            
   47c70:	588f           	addql #4,%sp                                
      _Context_Restore_fp( &executing->fp_context );                  
   47c72:	486a 00f4      	pea %a2@(244)                               
   47c76:	4eb9 0004 8cf4 	jsr 48cf4 <_CPU_Context_restore_fp>         
      _Thread_Allocated_fp = executing;                               
   47c7c:	588f           	addql #4,%sp                                
   47c7e:	23ca 0005 d8aa 	movel %a2,5d8aa <_Thread_Allocated_fp>      
    if ( executing->fp_context != NULL )                              
      _Context_Restore_fp( &executing->fp_context );                  
#endif                                                                
#endif                                                                
                                                                      
    executing = _Thread_Executing;                                    
   47c84:	2479 0005 d9bc 	moveal 5d9bc <_Per_CPU_Information+0xc>,%a2 
                                                                      
    _ISR_Disable( level );                                            
   47c8a:	223c 0000 0700 	movel #1792,%d1                             
   47c90:	40c0           	movew %sr,%d0                               
   47c92:	8280           	orl %d0,%d1                                 
   47c94:	46c1           	movew %d1,%sr                               
  /*                                                                  
   *  Now determine if we need to perform a dispatch on the current CPU.
   */                                                                 
  executing   = _Thread_Executing;                                    
  _ISR_Disable( level );                                              
  while ( _Thread_Dispatch_necessary == true ) {                      
   47c96:	1239 0005 d9c8 	moveb 5d9c8 <_Per_CPU_Information+0x18>,%d1 
   47c9c:	6600 ff28      	bnew 47bc6 <_Thread_Dispatch+0x56>          
    _ISR_Disable( level );                                            
  }                                                                   
                                                                      
post_switch:                                                          
                                                                      
  _ISR_Enable( level );                                               
   47ca0:	46c0           	movew %d0,%sr                               
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level--;                                 
   47ca2:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   47ca8:	5380           	subql #1,%d0                                
   47caa:	23c0 0005 d828 	movel %d0,5d828 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   47cb0:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
                                                                      
  _Thread_Unnest_dispatch();                                          
                                                                      
  _API_extensions_Run_postswitch();                                   
   47cb6:	4eb9 0004 6230 	jsr 46230 <_API_extensions_Run_postswitch>  
}                                                                     
   47cbc:	4cee 3c3c ffd0 	moveml %fp@(-48),%d2-%d5/%a2-%a5            
   47cc2:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00047cf0 <_Thread_Get>: */ Thread_Control *_Thread_Get ( Objects_Id id, Objects_Locations *location ) {
   47cf0:	4e56 0000      	linkw %fp,#0                                
   47cf4:	202e 0008      	movel %fp@(8),%d0                           
   47cf8:	2f03           	movel %d3,%sp@-                             
   47cfa:	206e 000c      	moveal %fp@(12),%a0                         
   47cfe:	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 ) ) {           
   47d00:	4a80           	tstl %d0                                    
   47d02:	661e           	bnes 47d22 <_Thread_Get+0x32>               
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level++;                                 
   47d04:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   47d0a:	5280           	addql #1,%d0                                
   47d0c:	23c0 0005 d828 	movel %d0,5d828 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   47d12:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
    _Thread_Disable_dispatch();                                       
    *location = OBJECTS_LOCAL;                                        
   47d18:	4290           	clrl %a0@                                   
    tp = _Thread_Executing;                                           
   47d1a:	2039 0005 d9bc 	movel 5d9bc <_Per_CPU_Information+0xc>,%d0  
    goto done;                                                        
   47d20:	6044           	bras 47d66 <_Thread_Get+0x76>               
 */                                                                   
RTEMS_INLINE_ROUTINE Objects_APIs _Objects_Get_API(                   
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (Objects_APIs) ((id >> OBJECTS_API_START_BIT) & OBJECTS_API_VALID_BITS);
   47d22:	7418           	moveq #24,%d2                               
   47d24:	2200           	movel %d0,%d1                               
   47d26:	e4a9           	lsrl %d2,%d1                                
   47d28:	7607           	moveq #7,%d3                                
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
   47d2a:	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);
   47d2e:	c283           	andl %d3,%d1                                
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
   47d30:	2241           	moveal %d1,%a1                              
   47d32:	5389           	subql #1,%a1                                
   47d34:	b489           	cmpl %a1,%d2                                
   47d36:	643a           	bccs 47d72 <_Thread_Get+0x82>               
   47d38:	6014           	bras 47d4e <_Thread_Get+0x5e>               
  if ( the_class != 1 ) {       /* threads are always first class :) */
    *location = OBJECTS_ERROR;                                        
    goto done;                                                        
  }                                                                   
                                                                      
  api_information = _Objects_Information_table[ the_api ];            
   47d3a:	43f9 0005 d7e4 	lea 5d7e4 <_Objects_Information_table>,%a1  
   47d40:	2271 1c00      	moveal %a1@(00000000,%d1:l:4),%a1           
   *  There is no way for this to happen if POSIX is enabled.  But there
   *  is actually a test case in sp43 for this which trips it whether or
   *  not POSIX is enabled.  So in the interest of safety, this is left
   *  on in all configurations.                                       
   */                                                                 
  if ( !api_information ) {                                           
   47d44:	4a89           	tstl %a1                                    
   47d46:	6706           	beqs 47d4e <_Thread_Get+0x5e>               
    *location = OBJECTS_ERROR;                                        
    goto done;                                                        
  }                                                                   
                                                                      
  information = api_information[ the_class ];                         
   47d48:	2229 0004      	movel %a1@(4),%d1                           
  if ( !information ) {                                               
   47d4c:	6608           	bnes 47d56 <_Thread_Get+0x66>               
    *location = OBJECTS_ERROR;                                        
   47d4e:	7001           	moveq #1,%d0                                
   47d50:	2080           	movel %d0,%a0@                              
{                                                                     
  uint32_t             the_api;                                       
  uint32_t             the_class;                                     
  Objects_Information **api_information;                              
  Objects_Information *information;                                   
  Thread_Control      *tp = (Thread_Control *) 0;                     
   47d52:	4280           	clrl %d0                                    
  }                                                                   
                                                                      
  information = api_information[ the_class ];                         
  if ( !information ) {                                               
    *location = OBJECTS_ERROR;                                        
    goto done;                                                        
   47d54:	6010           	bras 47d66 <_Thread_Get+0x76>               
  }                                                                   
                                                                      
  tp = (Thread_Control *) _Objects_Get( information, id, location );  
   47d56:	2f08           	movel %a0,%sp@-                             
   47d58:	2f00           	movel %d0,%sp@-                             
   47d5a:	2f01           	movel %d1,%sp@-                             
   47d5c:	4eb9 0004 70a0 	jsr 470a0 <_Objects_Get>                    
   47d62:	4fef 000c      	lea %sp@(12),%sp                            
                                                                      
done:                                                                 
  return tp;                                                          
}                                                                     
   47d66:	242e fff8      	movel %fp@(-8),%d2                          
   47d6a:	262e fffc      	movel %fp@(-4),%d3                          
   47d6e:	4e5e           	unlk %fp                                    
   47d70:	4e75           	rts                                         
 */                                                                   
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(                     
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (uint32_t)                                                   
   47d72:	761b           	moveq #27,%d3                               
   47d74:	2400           	movel %d0,%d2                               
   47d76:	e6aa           	lsrl %d3,%d2                                
    *location = OBJECTS_ERROR;                                        
    goto done;                                                        
  }                                                                   
                                                                      
  the_class = _Objects_Get_class( id );                               
  if ( the_class != 1 ) {       /* threads are always first class :) */
   47d78:	163c 0001      	moveb #1,%d3                                
   47d7c:	b682           	cmpl %d2,%d3                                
   47d7e:	67ba           	beqs 47d3a <_Thread_Get+0x4a>               
   47d80:	60cc           	bras 47d4e <_Thread_Get+0x5e>               
	...                                                                  
                                                                      

0004beb4 <_Thread_Handler>: * Input parameters: NONE * * Output parameters: NONE */ void _Thread_Handler( void ) {
   4beb4:	4e56 0000      	linkw %fp,#0                                
   4beb8:	2f0a           	movel %a2,%sp@-                             
  #if defined(EXECUTE_GLOBAL_CONSTRUCTORS)                            
    static bool doneConstructors;                                     
    bool doCons;                                                      
  #endif                                                              
                                                                      
  executing = _Thread_Executing;                                      
   4beba:	2479 0005 d9bc 	moveal 5d9bc <_Per_CPU_Information+0xc>,%a2 
 *  Input parameters:   NONE                                          
 *                                                                    
 *  Output parameters:  NONE                                          
 */                                                                   
void _Thread_Handler( void )                                          
{                                                                     
   4bec0:	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;                                 
   4bec2:	222a 00a8      	movel %a2@(168),%d1                         
  _ISR_Set_level(level);                                              
   4bec6:	40c0           	movew %sr,%d0                               
   4bec8:	e189           	lsll #8,%d1                                 
   4beca:	0280 0000 f8ff 	andil #63743,%d0                            
   4bed0:	8081           	orl %d1,%d0                                 
   4bed2:	46c0           	movew %d0,%sr                               
        && _Objects_Get_API( executing->Object.id ) != OBJECTS_INTERNAL_API;
      if (doCons)                                                     
        doneConstructors = true;                                      
    #else                                                             
      doCons = !doneConstructors;                                     
      doneConstructors = true;                                        
   4bed4:	7001           	moveq #1,%d0                                
      doCons = !doneConstructors                                      
        && _Objects_Get_API( executing->Object.id ) != OBJECTS_INTERNAL_API;
      if (doCons)                                                     
        doneConstructors = true;                                      
    #else                                                             
      doCons = !doneConstructors;                                     
   4bed6:	1439 0005 cfec 	moveb 5cfec <doneConstructors.3388>,%d2     
      doneConstructors = true;                                        
   4bedc:	13c0 0005 cfec 	moveb %d0,5cfec <doneConstructors.3388>     
    #endif                                                            
  #endif                                                              
                                                                      
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    #if ( CPU_USE_DEFERRED_FP_SWITCH == TRUE )                        
      if ( (executing->fp_context != NULL) &&                         
   4bee2:	4aaa 00f4      	tstl %a2@(244)                              
   4bee6:	6720           	beqs 4bf08 <_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 );                      
   4bee8:	2079 0005 d8aa 	moveal 5d8aa <_Thread_Allocated_fp>,%a0     
   4beee:	b1ca           	cmpal %a2,%a0                               
   4bef0:	6716           	beqs 4bf08 <_Thread_Handler+0x54>           
            !_Thread_Is_allocated_fp( executing ) ) {                 
        if ( _Thread_Allocated_fp != NULL )                           
   4bef2:	4a88           	tstl %a0                                    
   4bef4:	670c           	beqs 4bf02 <_Thread_Handler+0x4e>           
          _Context_Save_fp( &_Thread_Allocated_fp->fp_context );      
   4bef6:	4868 00f4      	pea %a0@(244)                               
   4befa:	4eb9 0004 8cd2 	jsr 48cd2 <_CPU_Context_save_fp>            
   4bf00:	588f           	addql #4,%sp                                
        _Thread_Allocated_fp = executing;                             
   4bf02:	23ca 0005 d8aa 	movel %a2,5d8aa <_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 );                         
   4bf08:	2f0a           	movel %a2,%sp@-                             
   4bf0a:	4eb9 0004 86e8 	jsr 486e8 <_User_extensions_Thread_begin>   
                                                                      
  /*                                                                  
   *  At this point, the dispatch disable level BETTER be 1.          
   */                                                                 
  _Thread_Enable_dispatch();                                          
   4bf10:	4eb9 0004 7cc8 	jsr 47cc8 <_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 (doCons) /* && (volatile void *)_init) */ {                    
   4bf16:	588f           	addql #4,%sp                                
   4bf18:	4a02           	tstb %d2                                    
   4bf1a:	6606           	bnes 4bf22 <_Thread_Handler+0x6e>           
      INIT_NAME ();                                                   
   4bf1c:	4eb9 0005 a17c 	jsr 5a17c <_init>                           
        _Thread_Enable_dispatch();                                    
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
   4bf22:	4aaa 0092      	tstl %a2@(146)                              
   4bf26:	6610           	bnes 4bf38 <_Thread_Handler+0x84>           <== NEVER TAKEN
    executing->Wait.return_argument =                                 
      (*(Thread_Entry_numeric) executing->Start.entry_point)(         
   4bf28:	2f2a 009a      	movel %a2@(154),%sp@-                       
   4bf2c:	206a 008e      	moveal %a2@(142),%a0                        
   4bf30:	4e90           	jsr %a0@                                    
      #endif                                                          
    }                                                                 
 #endif                                                               
                                                                      
  if ( executing->Start.prototype == THREAD_START_NUMERIC ) {         
    executing->Wait.return_argument =                                 
   4bf32:	588f           	addql #4,%sp                                
   4bf34:	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 );                       
   4bf38:	2f0a           	movel %a2,%sp@-                             
   4bf3a:	4eb9 0004 8720 	jsr 48720 <_User_extensions_Thread_exitted> 
                                                                      
  _Internal_error_Occurred(                                           
   4bf40:	4878 0005      	pea 5 <COMPARE>                             
   4bf44:	4878 0001      	pea 1 <ADD>                                 
   4bf48:	42a7           	clrl %sp@-                                  
   4bf4a:	4eb9 0004 6b84 	jsr 46b84 <_Internal_error_Occurred>        
                                                                      

00048a04 <_Thread_Restart>: */ RTEMS_INLINE_ROUTINE bool _States_Is_dormant ( States_Control the_states ) { return (the_states & STATES_DORMANT);
   48a04:	7001           	moveq #1,%d0                                
bool _Thread_Restart(                                                 
  Thread_Control            *the_thread,                              
  void                      *pointer_argument,                        
  Thread_Entry_numeric_type  numeric_argument                         
)                                                                     
{                                                                     
   48a06:	4e56 0000      	linkw %fp,#0                                
   48a0a:	2f0a           	movel %a2,%sp@-                             
   48a0c:	246e 0008      	moveal %fp@(8),%a2                          
   48a10:	c0aa 0010      	andl %a2@(16),%d0                           
  if ( !_States_Is_dormant( the_thread->current_state ) ) {           
   48a14:	6664           	bnes 48a7a <_Thread_Restart+0x76>           
                                                                      
    _Thread_Set_transient( the_thread );                              
   48a16:	2f0a           	movel %a2,%sp@-                             
   48a18:	4eb9 0004 8ae4 	jsr 48ae4 <_Thread_Set_transient>           
                                                                      
    _Thread_Reset( the_thread, pointer_argument, numeric_argument );  
   48a1e:	2f2e 0010      	movel %fp@(16),%sp@-                        
   48a22:	2f2e 000c      	movel %fp@(12),%sp@-                        
   48a26:	2f0a           	movel %a2,%sp@-                             
   48a28:	4eb9 0004 b3ac 	jsr 4b3ac <_Thread_Reset>                   
                                                                      
    _Thread_Load_environment( the_thread );                           
   48a2e:	2f0a           	movel %a2,%sp@-                             
   48a30:	4eb9 0004 b0f0 	jsr 4b0f0 <_Thread_Load_environment>        
                                                                      
    _Thread_Ready( the_thread );                                      
   48a36:	2f0a           	movel %a2,%sp@-                             
   48a38:	4eb9 0004 b37c 	jsr 4b37c <_Thread_Ready>                   
                                                                      
    _User_extensions_Thread_restart( the_thread );                    
   48a3e:	2f0a           	movel %a2,%sp@-                             
   48a40:	4eb9 0004 8eac 	jsr 48eac <_User_extensions_Thread_restart> 
                                                                      
    if ( _Thread_Is_executing ( the_thread ) )                        
   48a46:	4fef 001c      	lea %sp@(28),%sp                            
   48a4a:	b5f9 0005 e2c4 	cmpal 5e2c4 <_Per_CPU_Information+0xc>,%a2  
   48a50:	662c           	bnes 48a7e <_Thread_Restart+0x7a>           
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )                
{                                                                     
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  if ( _Thread_Executing->fp_context != NULL )                        
   48a52:	4aaa 00f4      	tstl %a2@(244)                              
   48a56:	670c           	beqs 48a64 <_Thread_Restart+0x60>           
    _Context_Restore_fp( &_Thread_Executing->fp_context );            
   48a58:	486a 00f4      	pea %a2@(244)                               
   48a5c:	4eb9 0004 93b4 	jsr 493b4 <_CPU_Context_restore_fp>         
   48a62:	588f           	addql #4,%sp                                
#endif                                                                
                                                                      
  _CPU_Context_Restart_self( &_Thread_Executing->Registers );         
   48a64:	2079 0005 e2c4 	moveal 5e2c4 <_Per_CPU_Information+0xc>,%a0 
   48a6a:	41e8 00c0      	lea %a0@(192),%a0                           
   48a6e:	2f08           	movel %a0,%sp@-                             
   48a70:	4eb9 0004 9262 	jsr 49262 <_CPU_Context_Restart_self>       
   48a76:	588f           	addql #4,%sp                                <== NOT EXECUTED
   48a78:	6004           	bras 48a7e <_Thread_Restart+0x7a>           <== NOT EXECUTED
      _Thread_Restart_self();                                         
                                                                      
    return true;                                                      
  }                                                                   
                                                                      
  return false;                                                       
   48a7a:	4200           	clrb %d0                                    
   48a7c:	6002           	bras 48a80 <_Thread_Restart+0x7c>           
    _User_extensions_Thread_restart( the_thread );                    
                                                                      
    if ( _Thread_Is_executing ( the_thread ) )                        
      _Thread_Restart_self();                                         
                                                                      
    return true;                                                      
   48a7e:	7001           	moveq #1,%d0                                
  }                                                                   
                                                                      
  return false;                                                       
}                                                                     
   48a80:	246e fffc      	moveal %fp@(-4),%a2                         
   48a84:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00047828 <_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 ) ) {
   47828:	7202           	moveq #2,%d1                                
  Thread_blocking_operation_States  sync_state __attribute__((unused)),
#endif                                                                
  Thread_Control                   *the_thread,                       
  ISR_Level                         level                             
)                                                                     
{                                                                     
   4782a:	4e56 0000      	linkw %fp,#0                                
   4782e:	202e 0010      	movel %fp@(16),%d0                          
   47832:	2f0a           	movel %a2,%sp@-                             
   47834:	246e 000c      	moveal %fp@(12),%a2                         
  #endif                                                              
                                                                      
  /*                                                                  
   * The thread is not waiting on anything after this completes.      
   */                                                                 
  the_thread->Wait.queue = NULL;                                      
   47838:	42aa 0044      	clrl %a2@(68)                               
                                                                      
  /*                                                                  
   *  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 ) ) {                  
   4783c:	b2aa 0050      	cmpl %a2@(80),%d1                           
   47840:	6618           	bnes 4785a <_Thread_blocking_operation_Cancel+0x32>
RTEMS_INLINE_ROUTINE void _Watchdog_Deactivate(                       
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_REMOVE_IT;                           
   47842:	123c 0003      	moveb #3,%d1                                
   47846:	2541 0050      	movel %d1,%a2@(80)                          
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
   4784a:	46c0           	movew %d0,%sr                               
    (void) _Watchdog_Remove( &the_thread->Timer );                    
   4784c:	486a 0048      	pea %a2@(72)                                
   47850:	4eb9 0004 89c8 	jsr 489c8 <_Watchdog_Remove>                
   47856:	588f           	addql #4,%sp                                
   47858:	6002           	bras 4785c <_Thread_blocking_operation_Cancel+0x34>
  } else                                                              
    _ISR_Enable( level );                                             
   4785a:	46c0           	movew %d0,%sr                               
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
   4785c:	2d4a 0008      	movel %a2,%fp@(8)                           
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
                                                                      
}                                                                     
   47860:	246e fffc      	moveal %fp@(-4),%a2                         
   47864:	203c 1003 fff8 	movel #268697592,%d0                        
   4786a:	2d40 000c      	movel %d0,%fp@(12)                          
   4786e:	4e5e           	unlk %fp                                    
   47870:	4ef9 0004 7954 	jmp 47954 <_Thread_Clear_state>             
	...                                                                  
                                                                      

0004bf50 <_Thread_queue_Extract_fifo>: Thread_Control *the_thread ) { ISR_Level level; _ISR_Disable( level );
   4bf50:	223c 0000 0700 	movel #1792,%d1                             
                                                                      
void _Thread_queue_Extract_fifo(                                      
  Thread_queue_Control *the_thread_queue __attribute__((unused)),     
  Thread_Control       *the_thread                                    
)                                                                     
{                                                                     
   4bf56:	4e56 0000      	linkw %fp,#0                                
   4bf5a:	2f0a           	movel %a2,%sp@-                             
   4bf5c:	246e 000c      	moveal %fp@(12),%a2                         
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
   4bf60:	40c0           	movew %sr,%d0                               
   4bf62:	8280           	orl %d0,%d1                                 
   4bf64:	46c1           	movew %d1,%sr                               
   4bf66:	222a 0010      	movel %a2@(16),%d1                          
   4bf6a:	0281 0003 bee0 	andil #245472,%d1                           
                                                                      
  if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
   4bf70:	660a           	bnes 4bf7c <_Thread_queue_Extract_fifo+0x2c>
    _ISR_Enable( level );                                             
   4bf72:	46c0           	movew %d0,%sr                               
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
                                                                      
}                                                                     
   4bf74:	246e fffc      	moveal %fp@(-4),%a2                         
   4bf78:	4e5e           	unlk %fp                                    
   4bf7a:	4e75           	rts                                         
)                                                                     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
   4bf7c:	2252           	moveal %a2@,%a1                             
                                                                      
  _Chain_Extract_unprotected( &the_thread->Object.Node );             
                                                                      
  the_thread->Wait.queue = NULL;                                      
                                                                      
  if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {                 
   4bf7e:	7202           	moveq #2,%d1                                
  previous       = the_node->previous;                                
   4bf80:	206a 0004      	moveal %a2@(4),%a0                          
  next->previous = previous;                                          
   4bf84:	2348 0004      	movel %a0,%a1@(4)                           
  previous->next = next;                                              
   4bf88:	2089           	movel %a1,%a0@                              
    return;                                                           
  }                                                                   
                                                                      
  _Chain_Extract_unprotected( &the_thread->Object.Node );             
                                                                      
  the_thread->Wait.queue = NULL;                                      
   4bf8a:	42aa 0044      	clrl %a2@(68)                               
                                                                      
  if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {                 
   4bf8e:	b2aa 0050      	cmpl %a2@(80),%d1                           
   4bf92:	6704           	beqs 4bf98 <_Thread_queue_Extract_fifo+0x48>
    _ISR_Enable( level );                                             
   4bf94:	46c0           	movew %d0,%sr                               
   4bf96:	6014           	bras 4bfac <_Thread_queue_Extract_fifo+0x5c>
   4bf98:	7203           	moveq #3,%d1                                
   4bf9a:	2541 0050      	movel %d1,%a2@(80)                          
  } else {                                                            
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
   4bf9e:	46c0           	movew %d0,%sr                               
    (void) _Watchdog_Remove( &the_thread->Timer );                    
   4bfa0:	486a 0048      	pea %a2@(72)                                
   4bfa4:	4eb9 0004 89c8 	jsr 489c8 <_Watchdog_Remove>                
   4bfaa:	588f           	addql #4,%sp                                
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unblock (                           
  Thread_Control *the_thread                                          
)                                                                     
{                                                                     
  _Thread_Clear_state( the_thread, STATES_BLOCKED );                  
   4bfac:	2d4a 0008      	movel %a2,%fp@(8)                           
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
                                                                      
}                                                                     
   4bfb0:	246e fffc      	moveal %fp@(-4),%a2                         
   4bfb4:	203c 1003 fff8 	movel #268697592,%d0                        
   4bfba:	2d40 000c      	movel %d0,%fp@(12)                          
   4bfbe:	4e5e           	unlk %fp                                    
   4bfc0:	4ef9 0004 7954 	jmp 47954 <_Thread_Clear_state>             
	...                                                                  
                                                                      

00048368 <_Thread_queue_Requeue>: void _Thread_queue_Requeue( Thread_queue_Control *the_thread_queue, Thread_Control *the_thread ) {
   48368:	4e56 fff0      	linkw %fp,#-16                              
   4836c:	48d7 0c04      	moveml %d2/%a2-%a3,%sp@                     
   48370:	246e 0008      	moveal %fp@(8),%a2                          
   48374:	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 )                                            
   48378:	4a8a           	tstl %a2                                    
   4837a:	6746           	beqs 483c2 <_Thread_queue_Requeue+0x5a>     <== NEVER TAKEN
                                                                      
  /*                                                                  
   * If queueing by FIFO, there is nothing to do. This only applies to
   * priority blocking discipline.                                    
   */                                                                 
  if ( the_thread_queue->discipline == THREAD_QUEUE_DISCIPLINE_PRIORITY ) {
   4837c:	7001           	moveq #1,%d0                                
   4837e:	b0aa 0034      	cmpl %a2@(52),%d0                           
   48382:	663e           	bnes 483c2 <_Thread_queue_Requeue+0x5a>     <== NEVER TAKEN
    Thread_queue_Control *tq = the_thread_queue;                      
    ISR_Level             level;                                      
    ISR_Level             level_ignored;                              
                                                                      
    _ISR_Disable( level );                                            
   48384:	303c 0700      	movew #1792,%d0                             
   48388:	40c2           	movew %sr,%d2                               
   4838a:	8082           	orl %d2,%d0                                 
   4838c:	46c0           	movew %d0,%sr                               
   4838e:	202b 0010      	movel %a3@(16),%d0                          
   48392:	0280 0003 bee0 	andil #245472,%d0                           
    if ( _States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
   48398:	6726           	beqs 483c0 <_Thread_queue_Requeue+0x58>     <== NEVER TAKEN
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_queue_Enter_critical_section (      
  Thread_queue_Control *the_thread_queue                              
)                                                                     
{                                                                     
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;
   4839a:	7001           	moveq #1,%d0                                
   4839c:	2540 0030      	movel %d0,%a2@(48)                          
      _Thread_queue_Enter_critical_section( tq );                     
      _Thread_queue_Extract_priority_helper( tq, the_thread, true );  
   483a0:	4878 0001      	pea 1 <ADD>                                 
   483a4:	2f0b           	movel %a3,%sp@-                             
   483a6:	2f0a           	movel %a2,%sp@-                             
   483a8:	4eb9 0004 abb4 	jsr 4abb4 <_Thread_queue_Extract_priority_helper>
      (void) _Thread_queue_Enqueue_priority( tq, the_thread, &level_ignored );
   483ae:	486e fffc      	pea %fp@(-4)                                
   483b2:	2f0b           	movel %a3,%sp@-                             
   483b4:	2f0a           	movel %a2,%sp@-                             
   483b6:	4eb9 0004 816c 	jsr 4816c <_Thread_queue_Enqueue_priority>  
   483bc:	4fef 0018      	lea %sp@(24),%sp                            
    }                                                                 
    _ISR_Enable( level );                                             
   483c0:	46c2           	movew %d2,%sr                               
  }                                                                   
}                                                                     
   483c2:	4cee 0c04 fff0 	moveml %fp@(-16),%d2/%a2-%a3                
   483c8:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

000483cc <_Thread_queue_Timeout>: void _Thread_queue_Timeout( Objects_Id id, void *ignored __attribute__((unused)) ) {
   483cc:	4e56 fffc      	linkw %fp,#-4                               
  Thread_Control       *the_thread;                                   
  Objects_Locations     location;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
   483d0:	486e fffc      	pea %fp@(-4)                                
   483d4:	2f2e 0008      	movel %fp@(8),%sp@-                         
   483d8:	4eb9 0004 7cf0 	jsr 47cf0 <_Thread_Get>                     
  switch ( location ) {                                               
   483de:	508f           	addql #8,%sp                                
   483e0:	4aae fffc      	tstl %fp@(-4)                               
   483e4:	661e           	bnes 48404 <_Thread_queue_Timeout+0x38>     <== NEVER TAKEN
#if defined(RTEMS_MULTIPROCESSING)                                    
    case OBJECTS_REMOTE:  /* impossible */                            
#endif                                                                
      break;                                                          
    case OBJECTS_LOCAL:                                               
      _Thread_queue_Process_timeout( the_thread );                    
   483e6:	2f00           	movel %d0,%sp@-                             
   483e8:	4eb9 0004 ac78 	jsr 4ac78 <_Thread_queue_Process_timeout>   
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level--;                                 
    return _Thread_Dispatch_disable_level;                            
   483ee:	588f           	addql #4,%sp                                
   *                                                                  
   * This routine decrements the thread dispatch level.               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_decrement_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level--;                                 
   483f0:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
   483f6:	5380           	subql #1,%d0                                
   483f8:	23c0 0005 d828 	movel %d0,5d828 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   483fe:	2039 0005 d828 	movel 5d828 <_Thread_Dispatch_disable_level>,%d0
      _Thread_Unnest_dispatch();                                      
      break;                                                          
  }                                                                   
}                                                                     
   48404:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

000519e0 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
   519e0:	4e56 ffc0      	linkw %fp,#-64                              
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   519e4:	200e           	movel %fp,%d0                               
   519e6:	41ee ffec      	lea %fp@(-20),%a0                           
   519ea:	5180           	subql #8,%d0                                
   519ec:	48d7 3cfc      	moveml %d2-%d7/%a2-%a5,%sp@                 
   519f0:	246e 0008      	moveal %fp@(8),%a2                          
   519f4:	2e0e           	movel %fp,%d7                               
   519f6:	260e           	movel %fp,%d3                               
   519f8:	0687 ffff ffe8 	addil #-24,%d7                              
   519fe:	0683 ffff fff4 	addil #-12,%d3                              
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
   51a04:	2a0a           	movel %a2,%d5                               
     /*                                                               
      *  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 ); 
   51a06:	240a           	movel %a2,%d2                               
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
   51a08:	0685 0000 0030 	addil #48,%d5                               
     /*                                                               
      *  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 ); 
   51a0e:	0682 0000 0068 	addil #104,%d2                              
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
   51a14:	2c08           	movel %a0,%d6                               
   51a16:	2800           	movel %d0,%d4                               
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   51a18:	2d48 ffe8      	movel %a0,%fp@(-24)                         
  head->previous = NULL;                                              
   51a1c:	42ae ffec      	clrl %fp@(-20)                              
  tail->previous = head;                                              
   51a20:	2d47 fff0      	movel %d7,%fp@(-16)                         
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   51a24:	2d40 fff4      	movel %d0,%fp@(-12)                         
  head->previous = NULL;                                              
   51a28:	42ae fff8      	clrl %fp@(-8)                               
  tail->previous = head;                                              
   51a2c:	2d43 fffc      	movel %d3,%fp@(-4)                          
{                                                                     
  /*                                                                  
   *  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;                                    
   51a30:	2547 0078      	movel %d7,%a2@(120)                         
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
   51a34:	47f9 0005 56c0 	lea 556c0 <_Watchdog_Adjust_to_chain>,%a3   
     /*                                                               
      *  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 ); 
   51a3a:	4bf9 0005 5640 	lea 55640 <_Watchdog_Adjust>,%a5            
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
   51a40:	2039 0007 5764 	movel 75764 <_Watchdog_Ticks_since_boot>,%d0
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
   51a46:	222a 003c      	movel %a2@(60),%d1                          
                                                                      
  watchdogs->last_snapshot = snapshot;                                
   51a4a:	2540 003c      	movel %d0,%a2@(60)                          
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
   51a4e:	9081           	subl %d1,%d0                                
   51a50:	2f03           	movel %d3,%sp@-                             
   51a52:	2f00           	movel %d0,%sp@-                             
   51a54:	2f05           	movel %d5,%sp@-                             
   51a56:	4e93           	jsr %a3@                                    
static void _Timer_server_Process_tod_watchdogs(                      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
   51a58:	2879 0007 56ee 	moveal 756ee <_TOD_Now>,%a4                 
  /*                                                                  
   *  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 ) {                                   
   51a5e:	4fef 000c      	lea %sp@(12),%sp                            
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
   51a62:	202a 0074      	movel %a2@(116),%d0                         
  /*                                                                  
   *  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 ) {                                   
   51a66:	b08c           	cmpl %a4,%d0                                
   51a68:	640e           	bccs 51a78 <_Timer_server_Body+0x98>        
    /*                                                                
     *  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 );
   51a6a:	2f03           	movel %d3,%sp@-                             
   51a6c:	220c           	movel %a4,%d1                               
   51a6e:	9280           	subl %d0,%d1                                
   51a70:	2f01           	movel %d1,%sp@-                             
   51a72:	2f02           	movel %d2,%sp@-                             
   51a74:	4e93           	jsr %a3@                                    
   51a76:	6010           	bras 51a88 <_Timer_server_Body+0xa8>        
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
   51a78:	b08c           	cmpl %a4,%d0                                
   51a7a:	6310           	blss 51a8c <_Timer_server_Body+0xac>        
     /*                                                               
      *  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 ); 
   51a7c:	908c           	subl %a4,%d0                                
   51a7e:	2f00           	movel %d0,%sp@-                             
   51a80:	4878 0001      	pea 1 <ADD>                                 
   51a84:	2f02           	movel %d2,%sp@-                             
   51a86:	4e95           	jsr %a5@                                    
   51a88:	4fef 000c      	lea %sp@(12),%sp                            
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
   51a8c:	254c 0074      	movel %a4,%a2@(116)                         
)                                                                     
{                                                                     
  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 );     
   51a90:	49f9 0005 574c 	lea 5574c <_Watchdog_Insert>,%a4            
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
   51a96:	202a 0078      	movel %a2@(120),%d0                         
   51a9a:	2f00           	movel %d0,%sp@-                             
   51a9c:	4eb9 0005 2468 	jsr 52468 <_Chain_Get>                      
                                                                      
    if ( timer == NULL ) {                                            
   51aa2:	588f           	addql #4,%sp                                
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
   51aa4:	2040           	moveal %d0,%a0                              
                                                                      
    if ( timer == NULL ) {                                            
   51aa6:	4a80           	tstl %d0                                    
   51aa8:	6724           	beqs 51ace <_Timer_server_Body+0xee>        
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
   51aaa:	2028 0038      	movel %a0@(56),%d0                          
   51aae:	7201           	moveq #1,%d1                                
   51ab0:	b280           	cmpl %d0,%d1                                
   51ab2:	6608           	bnes 51abc <_Timer_server_Body+0xdc>        
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
   51ab4:	4868 0010      	pea %a0@(16)                                
   51ab8:	2f05           	movel %d5,%sp@-                             
   51aba:	600c           	bras 51ac8 <_Timer_server_Body+0xe8>        
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
   51abc:	7203           	moveq #3,%d1                                
   51abe:	b280           	cmpl %d0,%d1                                
   51ac0:	66d4           	bnes 51a96 <_Timer_server_Body+0xb6>        <== NEVER TAKEN
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
   51ac2:	4868 0010      	pea %a0@(16)                                
   51ac6:	2f02           	movel %d2,%sp@-                             
   51ac8:	4e94           	jsr %a4@                                    
   51aca:	508f           	addql #8,%sp                                
   51acc:	60c8           	bras 51a96 <_Timer_server_Body+0xb6>        
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
   51ace:	203c 0000 0700 	movel #1792,%d0                             
   51ad4:	40c1           	movew %sr,%d1                               
   51ad6:	8081           	orl %d1,%d0                                 
   51ad8:	46c0           	movew %d0,%sr                               
    if ( _Chain_Is_empty( insert_chain ) ) {                          
   51ada:	bcae ffe8      	cmpl %fp@(-24),%d6                          
   51ade:	6612           	bnes 51af2 <_Timer_server_Body+0x112>       <== NEVER TAKEN
      ts->insert_chain = NULL;                                        
   51ae0:	42aa 0078      	clrl %a2@(120)                              
      _ISR_Enable( level );                                           
   51ae4:	46c1           	movew %d1,%sr                               
                                                                      
        /*                                                            
         *  It is essential that interrupts are disable here since an interrupt
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
   51ae6:	367c 0700      	moveaw #1792,%a3                            
  _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 ) ) {                          
   51aea:	b8ae fff4      	cmpl %fp@(-12),%d4                          
   51aee:	6608           	bnes 51af8 <_Timer_server_Body+0x118>       
   51af0:	603e           	bras 51b30 <_Timer_server_Body+0x150>       
      ts->insert_chain = NULL;                                        
      _ISR_Enable( level );                                           
                                                                      
      break;                                                          
    } else {                                                          
      _ISR_Enable( level );                                           
   51af2:	46c1           	movew %d1,%sr                               <== NOT EXECUTED
   51af4:	6000 ff4a      	braw 51a40 <_Timer_server_Body+0x60>        <== 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 );                                        
   51af8:	200b           	movel %a3,%d0                               
   51afa:	40c1           	movew %sr,%d1                               
   51afc:	8081           	orl %d1,%d0                                 
   51afe:	46c0           	movew %d0,%sr                               
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
   51b00:	206e fff4      	moveal %fp@(-12),%a0                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
   51b04:	b888           	cmpl %a0,%d4                                
   51b06:	6722           	beqs 51b2a <_Timer_server_Body+0x14a>       
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
   51b08:	2250           	moveal %a0@,%a1                             
                                                                      
  head->next = new_first;                                             
  new_first->previous = head;                                         
   51b0a:	2343 0004      	movel %d3,%a1@(4)                           
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
   51b0e:	42a8 0008      	clrl %a0@(8)                                
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *old_first = head->next;                                 
  Chain_Node *new_first = old_first->next;                            
                                                                      
  head->next = new_first;                                             
   51b12:	2d49 fff4      	movel %a1,%fp@(-12)                         
          _ISR_Enable( level );                                       
   51b16:	46c1           	movew %d1,%sr                               
        /*                                                            
         *  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 );    
   51b18:	2f28 0024      	movel %a0@(36),%sp@-                        
   51b1c:	2f28 0020      	movel %a0@(32),%sp@-                        
   51b20:	2068 001c      	moveal %a0@(28),%a0                         
   51b24:	4e90           	jsr %a0@                                    
      }                                                               
   51b26:	508f           	addql #8,%sp                                
   51b28:	60ce           	bras 51af8 <_Timer_server_Body+0x118>       
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
          watchdog->state = WATCHDOG_INACTIVE;                        
          _ISR_Enable( level );                                       
        } else {                                                      
          _ISR_Enable( level );                                       
   51b2a:	46c1           	movew %d1,%sr                               
   51b2c:	6000 ff02      	braw 51a30 <_Timer_server_Body+0x50>        
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
   51b30:	47f9 0005 5870 	lea 55870 <_Watchdog_Remove>,%a3            
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
      }                                                               
    } else {                                                          
      ts->active = false;                                             
   51b36:	4200           	clrb %d0                                    
   51b38:	1540 007c      	moveb %d0,%a2@(124)                         
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
   51b3c:	4eba fdc2      	jsr %pc@(51900 <_Thread_Disable_dispatch>)  
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
   51b40:	4878 0008      	pea 8 <DIVIDE_BY_ZERO>                      
   51b44:	2f12           	movel %a2@,%sp@-                            
   51b46:	4eb9 0005 511c 	jsr 5511c <_Thread_Set_state>               
        _Timer_server_Reset_interval_system_watchdog( ts );           
   51b4c:	2f0a           	movel %a2,%sp@-                             
   51b4e:	4eba fdcc      	jsr %pc@(5191c <_Timer_server_Reset_interval_system_watchdog>)
        _Timer_server_Reset_tod_system_watchdog( ts );                
   51b52:	2f0a           	movel %a2,%sp@-                             
   51b54:	4eba fe26      	jsr %pc@(5197c <_Timer_server_Reset_tod_system_watchdog>)
      _Thread_Enable_dispatch();                                      
   51b58:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
                                                                      
      ts->active = true;                                              
   51b5e:	7201           	moveq #1,%d1                                
   51b60:	1541 007c      	moveb %d1,%a2@(124)                         
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
   51b64:	486a 0008      	pea %a2@(8)                                 
   51b68:	4e93           	jsr %a3@                                    
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
   51b6a:	486a 0040      	pea %a2@(64)                                
   51b6e:	4e93           	jsr %a3@                                    
   51b70:	4fef 0018      	lea %sp@(24),%sp                            
   51b74:	6000 feba      	braw 51a30 <_Timer_server_Body+0x50>        
                                                                      

00051b78 <_Timer_server_Schedule_operation_method>: static void _Timer_server_Schedule_operation_method( Timer_server_Control *ts, Timer_Control *timer ) {
   51b78:	4e56 fff0      	linkw %fp,#-16                              
   51b7c:	48d7 1c04      	moveml %d2/%a2-%a4,%sp@                     
   51b80:	246e 0008      	moveal %fp@(8),%a2                          
   51b84:	266e 000c      	moveal %fp@(12),%a3                         
  if ( ts->insert_chain == NULL ) {                                   
   51b88:	202a 0078      	movel %a2@(120),%d0                         
   51b8c:	6600 00ea      	bnew 51c78 <_Timer_server_Schedule_operation_method+0x100>
   *  is the reference point for the delta chain.  Thus if we do not update the
   *  reference point we have to add DT to the initial delta of the watchdog
   *  being inserted.  This could result in an integer overflow.      
   */                                                                 
                                                                      
  _Thread_Disable_dispatch();                                         
   51b90:	4eba fd6e      	jsr %pc@(51900 <_Thread_Disable_dispatch>)  
                                                                      
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
   51b94:	202b 0038      	movel %a3@(56),%d0                          
   51b98:	7201           	moveq #1,%d1                                
   51b9a:	b280           	cmpl %d0,%d1                                
   51b9c:	665c           	bnes 51bfa <_Timer_server_Schedule_operation_method+0x82>
    /*                                                                
     *  We have to advance the last known ticks value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
   51b9e:	203c 0000 0700 	movel #1792,%d0                             
   51ba4:	40c2           	movew %sr,%d2                               
   51ba6:	8082           	orl %d2,%d0                                 
   51ba8:	46c0           	movew %d0,%sr                               
    snapshot = _Watchdog_Ticks_since_boot;                            
   51baa:	2039 0007 5764 	movel 75764 <_Watchdog_Ticks_since_boot>,%d0
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
   51bb0:	43ea 0034      	lea %a2@(52),%a1                            
    last_snapshot = ts->Interval_watchdogs.last_snapshot;             
   51bb4:	222a 003c      	movel %a2@(60),%d1                          
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
   51bb8:	206a 0030      	moveal %a2@(48),%a0                         
    if ( !_Chain_Is_empty( &ts->Interval_watchdogs.Chain ) ) {        
   51bbc:	b3c8           	cmpal %a0,%a1                               
   51bbe:	6716           	beqs 51bd6 <_Timer_server_Schedule_operation_method+0x5e>
      first_watchdog = _Watchdog_First( &ts->Interval_watchdogs.Chain );
                                                                      
      /*                                                              
       *  We assume adequate unsigned arithmetic here.                
       */                                                             
      delta = snapshot - last_snapshot;                               
   51bc0:	2240           	moveal %d0,%a1                              
   51bc2:	93c1           	subal %d1,%a1                               
                                                                      
      delta_interval = first_watchdog->delta_interval;                
   51bc4:	2228 0010      	movel %a0@(16),%d1                          
      if (delta_interval > delta) {                                   
   51bc8:	b3c1           	cmpal %d1,%a1                               
   51bca:	6404           	bccs 51bd0 <_Timer_server_Schedule_operation_method+0x58>
        delta_interval -= delta;                                      
   51bcc:	9289           	subl %a1,%d1                                
   51bce:	6002           	bras 51bd2 <_Timer_server_Schedule_operation_method+0x5a>
      } else {                                                        
        delta_interval = 0;                                           
   51bd0:	4281           	clrl %d1                                    
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
   51bd2:	2141 0010      	movel %d1,%a0@(16)                          
    }                                                                 
    ts->Interval_watchdogs.last_snapshot = snapshot;                  
   51bd6:	2540 003c      	movel %d0,%a2@(60)                          
    _ISR_Enable( level );                                             
   51bda:	46c2           	movew %d2,%sr                               
                                                                      
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
   51bdc:	486b 0010      	pea %a3@(16)                                
   51be0:	486a 0030      	pea %a2@(48)                                
   51be4:	4eb9 0005 574c 	jsr 5574c <_Watchdog_Insert>                
                                                                      
    if ( !ts->active ) {                                              
   51bea:	508f           	addql #8,%sp                                
   51bec:	102a 007c      	moveb %a2@(124),%d0                         
   51bf0:	6678           	bnes 51c6a <_Timer_server_Schedule_operation_method+0xf2>
      _Timer_server_Reset_interval_system_watchdog( ts );             
   51bf2:	2f0a           	movel %a2,%sp@-                             
   51bf4:	4eba fd26      	jsr %pc@(5191c <_Timer_server_Reset_interval_system_watchdog>)
   51bf8:	606e           	bras 51c68 <_Timer_server_Schedule_operation_method+0xf0>
    }                                                                 
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
   51bfa:	7203           	moveq #3,%d1                                
   51bfc:	b280           	cmpl %d0,%d1                                
   51bfe:	666a           	bnes 51c6a <_Timer_server_Schedule_operation_method+0xf2>
    /*                                                                
     *  We have to advance the last known seconds value of the server and update
     *  the watchdog chain accordingly.                               
     */                                                               
    _ISR_Disable( level );                                            
   51c00:	203c 0000 0700 	movel #1792,%d0                             
   51c06:	40c2           	movew %sr,%d2                               
   51c08:	8082           	orl %d2,%d0                                 
   51c0a:	46c0           	movew %d0,%sr                               
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_first( the_chain )                          
    == _Chain_Immutable_tail( the_chain );                            
   51c0c:	200a           	movel %a2,%d0                               
   51c0e:	0680 0000 006c 	addil #108,%d0                              
    snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();        
   51c14:	2239 0007 56ee 	movel 756ee <_TOD_Now>,%d1                  
    last_snapshot = ts->TOD_watchdogs.last_snapshot;                  
   51c1a:	226a 0074      	moveal %a2@(116),%a1                        
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
   51c1e:	206a 0068      	moveal %a2@(104),%a0                        
    if ( !_Chain_Is_empty( &ts->TOD_watchdogs.Chain ) ) {             
   51c22:	b088           	cmpl %a0,%d0                                
   51c24:	6720           	beqs 51c46 <_Timer_server_Schedule_operation_method+0xce>
      first_watchdog = _Watchdog_First( &ts->TOD_watchdogs.Chain );   
      delta_interval = first_watchdog->delta_interval;                
   51c26:	2028 0010      	movel %a0@(16),%d0                          
      if ( snapshot > last_snapshot ) {                               
   51c2a:	b3c1           	cmpal %d1,%a1                               
   51c2c:	640c           	bccs 51c3a <_Timer_server_Schedule_operation_method+0xc2>
        /*                                                            
         *  We advanced in time.                                      
         */                                                           
        delta = snapshot - last_snapshot;                             
   51c2e:	2841           	moveal %d1,%a4                              
   51c30:	99c9           	subal %a1,%a4                               
        if (delta_interval > delta) {                                 
   51c32:	b9c0           	cmpal %d0,%a4                               
   51c34:	640a           	bccs 51c40 <_Timer_server_Schedule_operation_method+0xc8><== NEVER TAKEN
          delta_interval -= delta;                                    
   51c36:	908c           	subl %a4,%d0                                
   51c38:	6008           	bras 51c42 <_Timer_server_Schedule_operation_method+0xca>
        }                                                             
      } else {                                                        
        /*                                                            
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
   51c3a:	d089           	addl %a1,%d0                                
        delta_interval += delta;                                      
   51c3c:	9081           	subl %d1,%d0                                
   51c3e:	6002           	bras 51c42 <_Timer_server_Schedule_operation_method+0xca>
         */                                                           
        delta = snapshot - last_snapshot;                             
        if (delta_interval > delta) {                                 
          delta_interval -= delta;                                    
        } else {                                                      
          delta_interval = 0;                                         
   51c40:	4280           	clrl %d0                                    <== NOT EXECUTED
         *  Someone put us in the past.                               
         */                                                           
        delta = last_snapshot - snapshot;                             
        delta_interval += delta;                                      
      }                                                               
      first_watchdog->delta_interval = delta_interval;                
   51c42:	2140 0010      	movel %d0,%a0@(16)                          
    }                                                                 
    ts->TOD_watchdogs.last_snapshot = snapshot;                       
   51c46:	2541 0074      	movel %d1,%a2@(116)                         
    _ISR_Enable( level );                                             
   51c4a:	46c2           	movew %d2,%sr                               
                                                                      
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
   51c4c:	486b 0010      	pea %a3@(16)                                
   51c50:	486a 0068      	pea %a2@(104)                               
   51c54:	4eb9 0005 574c 	jsr 5574c <_Watchdog_Insert>                
                                                                      
    if ( !ts->active ) {                                              
   51c5a:	508f           	addql #8,%sp                                
   51c5c:	102a 007c      	moveb %a2@(124),%d0                         
   51c60:	6608           	bnes 51c6a <_Timer_server_Schedule_operation_method+0xf2>
      _Timer_server_Reset_tod_system_watchdog( ts );                  
   51c62:	2f0a           	movel %a2,%sp@-                             
   51c64:	4eba fd16      	jsr %pc@(5197c <_Timer_server_Reset_tod_system_watchdog>)
   51c68:	588f           	addql #4,%sp                                
     *  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 );           
  }                                                                   
}                                                                     
   51c6a:	4cee 1c04 fff0 	moveml %fp@(-16),%d2/%a2-%a4                
   51c70:	4e5e           	unlk %fp                                    
    if ( !ts->active ) {                                              
      _Timer_server_Reset_tod_system_watchdog( ts );                  
    }                                                                 
  }                                                                   
                                                                      
  _Thread_Enable_dispatch();                                          
   51c72:	4ef9 0005 4940 	jmp 54940 <_Thread_Enable_dispatch>         
     *  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 );           
   51c78:	202a 0078      	movel %a2@(120),%d0                         
   51c7c:	2d4b 000c      	movel %a3,%fp@(12)                          
  }                                                                   
}                                                                     
   51c80:	4cee 1c04 fff0 	moveml %fp@(-16),%d2/%a2-%a4                
     *  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 );           
   51c86:	2d40 0008      	movel %d0,%fp@(8)                           
  }                                                                   
}                                                                     
   51c8a:	4e5e           	unlk %fp                                    
     *  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 );           
   51c8c:	4ef9 0005 2408 	jmp 52408 <_Chain_Append>                   
                                                                      

00048634 <_User_extensions_Handler_initialization>: #include <rtems/score/userext.h> #include <rtems/score/wkspace.h> #include <string.h> void _User_extensions_Handler_initialization(void) {
   48634:	4e56 ffe8      	linkw %fp,#-24                              
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   48638:	203c 0005 d970 	movel #383344,%d0                           
   4863e:	23c0 0005 d96c 	movel %d0,5d96c <_User_extensions_List>     
  head->previous = NULL;                                              
  tail->previous = head;                                              
   48644:	203c 0005 d96c 	movel #383340,%d0                           
   4864a:	23c0 0005 d974 	movel %d0,5d974 <_User_extensions_List+0x8> 
)                                                                     
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
   48650:	203c 0005 d830 	movel #383024,%d0                           
   48656:	23c0 0005 d82c 	movel %d0,5d82c <_User_extensions_Switches_list>
  head->previous = NULL;                                              
  tail->previous = head;                                              
   4865c:	203c 0005 d82c 	movel #383020,%d0                           
{                                                                     
  Chain_Node *head = _Chain_Head( the_chain );                        
  Chain_Node *tail = _Chain_Tail( the_chain );                        
                                                                      
  head->next = tail;                                                  
  head->previous = NULL;                                              
   48662:	42b9 0005 d970 	clrl 5d970 <_User_extensions_List+0x4>      
   48668:	48d7 1c1c      	moveml %d2-%d4/%a2-%a4,%sp@                 
  User_extensions_Control *extension;                                 
  uint32_t                 i;                                         
  uint32_t                 number_of_extensions;                      
  User_extensions_Table   *initial_extensions;                        
                                                                      
  number_of_extensions = Configuration.number_of_initial_extensions;  
   4866c:	2839 0005 bf02 	movel 5bf02 <Configuration+0x36>,%d4        
  initial_extensions   = Configuration.User_extension_table;          
   48672:	2639 0005 bf06 	movel 5bf06 <Configuration+0x3a>,%d3        
   48678:	42b9 0005 d830 	clrl 5d830 <_User_extensions_Switches_list+0x4>
  tail->previous = head;                                              
   4867e:	23c0 0005 d834 	movel %d0,5d834 <_User_extensions_Switches_list+0x8>
                                                                      
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
   48684:	4a83           	tstl %d3                                    
   48686:	6754           	beqs 486dc <_User_extensions_Handler_initialization+0xa8><== NEVER TAKEN
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
   48688:	7434           	moveq #52,%d2                               
   4868a:	4c04 2800      	mulsl %d4,%d2                               
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
   4868e:	49f9 0004 c854 	lea 4c854 <memcpy>,%a4                      
                                                                      
  _User_extensions_Add_set( extension );                              
   48694:	47f9 0004 acec 	lea 4acec <_User_extensions_Add_set>,%a3    
                                                                      
  _Chain_Initialize_empty( &_User_extensions_List );                  
  _Chain_Initialize_empty( &_User_extensions_Switches_list );         
                                                                      
  if ( initial_extensions ) {                                         
    extension = (User_extensions_Control *)                           
   4869a:	2f02           	movel %d2,%sp@-                             
   4869c:	4eb9 0004 8b56 	jsr 48b56 <_Workspace_Allocate_or_fatal_error>
   486a2:	2440           	moveal %d0,%a2                              
      _Workspace_Allocate_or_fatal_error(                             
        number_of_extensions * sizeof( User_extensions_Control )      
      );                                                              
                                                                      
    memset (                                                          
   486a4:	2f02           	movel %d2,%sp@-                             
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
   486a6:	4282           	clrl %d2                                    
    extension = (User_extensions_Control *)                           
      _Workspace_Allocate_or_fatal_error(                             
        number_of_extensions * sizeof( User_extensions_Control )      
      );                                                              
                                                                      
    memset (                                                          
   486a8:	42a7           	clrl %sp@-                                  
   486aa:	2f00           	movel %d0,%sp@-                             
   486ac:	4eb9 0004 c8c4 	jsr 4c8c4 <memset>                          
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
   486b2:	4fef 0010      	lea %sp@(16),%sp                            
   486b6:	6020           	bras 486d8 <_User_extensions_Handler_initialization+0xa4>
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
   486b8:	4878 0020      	pea 20 <OPER2+0xc>                          
   486bc:	5282           	addql #1,%d2                                
   486be:	2f03           	movel %d3,%sp@-                             
   486c0:	486a 0014      	pea %a2@(20)                                
   486c4:	0683 0000 0020 	addil #32,%d3                               
   486ca:	4e94           	jsr %a4@                                    
                                                                      
  _User_extensions_Add_set( extension );                              
   486cc:	2f0a           	movel %a2,%sp@-                             
      _User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
      extension++;                                                    
   486ce:	45ea 0034      	lea %a2@(52),%a2                            
   486d2:	4e93           	jsr %a3@                                    
      extension,                                                      
      0,                                                              
      number_of_extensions * sizeof( User_extensions_Control )        
    );                                                                
                                                                      
    for ( i = 0 ; i < number_of_extensions ; i++ ) {                  
   486d4:	4fef 0010      	lea %sp@(16),%sp                            
   486d8:	b882           	cmpl %d2,%d4                                
   486da:	66dc           	bnes 486b8 <_User_extensions_Handler_initialization+0x84>
      _User_extensions_Add_set_with_table (extension, &initial_extensions[i]);
      extension++;                                                    
    }                                                                 
  }                                                                   
}                                                                     
   486dc:	4cee 1c1c ffe8 	moveml %fp@(-24),%d2-%d4/%a2-%a4            
   486e2:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00049b64 <_Watchdog_Adjust>: Watchdog_Interval units ) { ISR_Level level; _ISR_Disable( level );
   49b64:	327c 0700      	moveaw #1792,%a1                            
   49b68:	2209           	movel %a1,%d1                               
void _Watchdog_Adjust(                                                
  Chain_Control               *header,                                
  Watchdog_Adjust_directions   direction,                             
  Watchdog_Interval            units                                  
)                                                                     
{                                                                     
   49b6a:	4e56 ffec      	linkw %fp,#-20                              
   49b6e:	48d7 1c0c      	moveml %d2-%d3/%a2-%a4,%sp@                 
   49b72:	266e 0008      	moveal %fp@(8),%a3                          
   49b76:	262e 000c      	movel %fp@(12),%d3                          
   49b7a:	242e 0010      	movel %fp@(16),%d2                          
  ISR_Level level;                                                    
                                                                      
  _ISR_Disable( level );                                              
   49b7e:	40c0           	movew %sr,%d0                               
   49b80:	8280           	orl %d0,%d1                                 
   49b82:	46c1           	movew %d1,%sr                               
 */                                                                   
RTEMS_INLINE_ROUTINE const Chain_Node *_Chain_Immutable_first(        
  const Chain_Control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Immutable_head( the_chain )->next;                    
   49b84:	244b           	moveal %a3,%a2                              
   49b86:	205a           	moveal %a2@+,%a0                            
   *       hence the compiler must not assume *header to remain       
   *       unmodified across that call.                               
   *                                                                  
   *       Till Straumann, 7/2003                                     
   */                                                                 
  if ( !_Chain_Is_empty( header ) ) {                                 
   49b88:	b5c8           	cmpal %a0,%a2                               
   49b8a:	674c           	beqs 49bd8 <_Watchdog_Adjust+0x74>          
    switch ( direction ) {                                            
   49b8c:	4a83           	tstl %d3                                    
   49b8e:	673c           	beqs 49bcc <_Watchdog_Adjust+0x68>          
   49b90:	7201           	moveq #1,%d1                                
   49b92:	b283           	cmpl %d3,%d1                                
   49b94:	6642           	bnes 49bd8 <_Watchdog_Adjust+0x74>          <== NEVER TAKEN
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
   49b96:	d5a8 0010      	addl %d2,%a0@(16)                           
        break;                                                        
   49b9a:	603c           	bras 49bd8 <_Watchdog_Adjust+0x74>          
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_First(                        
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return _Chain_Head( the_chain )->next;                              
   49b9c:	2053           	moveal %a3@,%a0                             
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
          if ( units < _Watchdog_First( header )->delta_interval ) {  
   49b9e:	2228 0010      	movel %a0@(16),%d1                          
   49ba2:	b282           	cmpl %d2,%d1                                
   49ba4:	6308           	blss 49bae <_Watchdog_Adjust+0x4a>          
            _Watchdog_First( header )->delta_interval -= units;       
   49ba6:	9282           	subl %d2,%d1                                
   49ba8:	2141 0010      	movel %d1,%a0@(16)                          
            break;                                                    
   49bac:	602a           	bras 49bd8 <_Watchdog_Adjust+0x74>          
          } else {                                                    
            units -= _Watchdog_First( header )->delta_interval;       
   49bae:	9481           	subl %d1,%d2                                
            _Watchdog_First( header )->delta_interval = 1;            
   49bb0:	7201           	moveq #1,%d1                                
   49bb2:	2141 0010      	movel %d1,%a0@(16)                          
                                                                      
            _ISR_Enable( level );                                     
   49bb6:	46c0           	movew %d0,%sr                               
                                                                      
            _Watchdog_Tickle( header );                               
   49bb8:	2f0b           	movel %a3,%sp@-                             
   49bba:	4e94           	jsr %a4@                                    
                                                                      
            _ISR_Disable( level );                                    
   49bbc:	2203           	movel %d3,%d1                               
   49bbe:	40c0           	movew %sr,%d0                               
   49bc0:	8280           	orl %d0,%d1                                 
   49bc2:	46c1           	movew %d1,%sr                               
                                                                      
            if ( _Chain_Is_empty( header ) )                          
   49bc4:	588f           	addql #4,%sp                                
   49bc6:	b5d3           	cmpal %a3@,%a2                              
   49bc8:	660a           	bnes 49bd4 <_Watchdog_Adjust+0x70>          
   49bca:	600c           	bras 49bd8 <_Watchdog_Adjust+0x74>          
            units -= _Watchdog_First( header )->delta_interval;       
            _Watchdog_First( header )->delta_interval = 1;            
                                                                      
            _ISR_Enable( level );                                     
                                                                      
            _Watchdog_Tickle( header );                               
   49bcc:	49f9 0004 9d84 	lea 49d84 <_Watchdog_Tickle>,%a4            
                                                                      
            _ISR_Disable( level );                                    
   49bd2:	2609           	movel %a1,%d3                               
    switch ( direction ) {                                            
      case WATCHDOG_BACKWARD:                                         
        _Watchdog_First( header )->delta_interval += units;           
        break;                                                        
      case WATCHDOG_FORWARD:                                          
        while ( units ) {                                             
   49bd4:	4a82           	tstl %d2                                    
   49bd6:	66c4           	bnes 49b9c <_Watchdog_Adjust+0x38>          <== ALWAYS TAKEN
        }                                                             
        break;                                                        
    }                                                                 
  }                                                                   
                                                                      
  _ISR_Enable( level );                                               
   49bd8:	46c0           	movew %d0,%sr                               
                                                                      
}                                                                     
   49bda:	4cee 1c0c ffec 	moveml %fp@(-20),%d2-%d3/%a2-%a4            
   49be0:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

000488a4 <_Watchdog_Insert>: Watchdog_Interval delta_interval; insert_isr_nest_level = _ISR_Nest_level; _ISR_Disable( level );
   488a4:	327c 0700      	moveaw #1792,%a1                            
   488a8:	2009           	movel %a1,%d0                               
                                                                      
void _Watchdog_Insert(                                                
  Chain_Control         *header,                                      
  Watchdog_Control      *the_watchdog                                 
)                                                                     
{                                                                     
   488aa:	4e56 ffec      	linkw %fp,#-20                              
   488ae:	206e 000c      	moveal %fp@(12),%a0                         
   488b2:	48d7 0c1c      	moveml %d2-%d4/%a2-%a3,%sp@                 
   488b6:	266e 0008      	moveal %fp@(8),%a3                          
  Watchdog_Control  *after;                                           
  uint32_t           insert_isr_nest_level;                           
  Watchdog_Interval  delta_interval;                                  
                                                                      
                                                                      
  insert_isr_nest_level   = _ISR_Nest_level;                          
   488ba:	2439 0005 d9b8 	movel 5d9b8 <_Per_CPU_Information+0x8>,%d2  
                                                                      
  _ISR_Disable( level );                                              
   488c0:	40c1           	movew %sr,%d1                               
   488c2:	8081           	orl %d1,%d0                                 
   488c4:	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 ) {                   
   488c6:	4aa8 0008      	tstl %a0@(8)                                
   488ca:	6600 0098      	bnew 48964 <_Watchdog_Insert+0xc0>          
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
   488ce:	7001           	moveq #1,%d0                                
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
   488d0:	2449           	moveal %a1,%a2                              
  if ( the_watchdog->state != WATCHDOG_INACTIVE ) {                   
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  the_watchdog->state = WATCHDOG_BEING_INSERTED;                      
   488d2:	2140 0008      	movel %d0,%a0@(8)                           
  _Watchdog_Sync_count++;                                             
   488d6:	2039 0005 d924 	movel 5d924 <_Watchdog_Sync_count>,%d0      
   488dc:	5280           	addql #1,%d0                                
   488de:	23c0 0005 d924 	movel %d0,5d924 <_Watchdog_Sync_count>      
                                                                      
restart:                                                              
  delta_interval = the_watchdog->initial;                             
   488e4:	2028 000c      	movel %a0@(12),%d0                          
   488e8:	2253           	moveal %a3@,%a1                             
                                                                      
  for ( after = _Watchdog_First( header ) ;                           
        ;                                                             
        after = _Watchdog_Next( after ) ) {                           
                                                                      
     if ( delta_interval == 0 || !_Watchdog_Next( after ) )           
   488ea:	4a80           	tstl %d0                                    
   488ec:	673c           	beqs 4892a <_Watchdog_Insert+0x86>          
   488ee:	4a91           	tstl %a1@                                   
   488f0:	6738           	beqs 4892a <_Watchdog_Insert+0x86>          
       break;                                                         
                                                                      
     if ( delta_interval < after->delta_interval ) {                  
   488f2:	2629 0010      	movel %a1@(16),%d3                          
   488f6:	b680           	cmpl %d0,%d3                                
   488f8:	6308           	blss 48902 <_Watchdog_Insert+0x5e>          
       after->delta_interval -= delta_interval;                       
   488fa:	9680           	subl %d0,%d3                                
   488fc:	2343 0010      	movel %d3,%a1@(16)                          
       break;                                                         
   48900:	6028           	bras 4892a <_Watchdog_Insert+0x86>          
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
                                                                      
     _ISR_Flash( level );                                             
   48902:	280a           	movel %a2,%d4                               
   48904:	46c1           	movew %d1,%sr                               
   48906:	8881           	orl %d1,%d4                                 
   48908:	46c4           	movew %d4,%sr                               
                                                                      
     if ( the_watchdog->state != WATCHDOG_BEING_INSERTED ) {          
   4890a:	7801           	moveq #1,%d4                                
   4890c:	b8a8 0008      	cmpl %a0@(8),%d4                            
   48910:	663e           	bnes 48950 <_Watchdog_Insert+0xac>          <== NEVER TAKEN
       goto exit_insert;                                              
     }                                                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
   48912:	2839 0005 d8cc 	movel 5d8cc <_Watchdog_Sync_level>,%d4      
   48918:	b484           	cmpl %d4,%d2                                
   4891a:	6408           	bccs 48924 <_Watchdog_Insert+0x80>          
       _Watchdog_Sync_level = insert_isr_nest_level;                  
   4891c:	23c2 0005 d8cc 	movel %d2,5d8cc <_Watchdog_Sync_level>      
       goto restart;                                                  
   48922:	60c0           	bras 488e4 <_Watchdog_Insert+0x40>          
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
  _Watchdog_Sync_count--;                                             
  _ISR_Enable( level );                                               
}                                                                     
   48924:	2251           	moveal %a1@,%a1                             
     if ( delta_interval < after->delta_interval ) {                  
       after->delta_interval -= delta_interval;                       
       break;                                                         
     }                                                                
                                                                      
     delta_interval -= after->delta_interval;                         
   48926:	9083           	subl %d3,%d0                                
                                                                      
     if ( _Watchdog_Sync_level > insert_isr_nest_level ) {            
       _Watchdog_Sync_level = insert_isr_nest_level;                  
       goto restart;                                                  
     }                                                                
  }                                                                   
   48928:	60c0           	bras 488ea <_Watchdog_Insert+0x46>          
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
   4892a:	2269 0004      	moveal %a1@(4),%a1                          
RTEMS_INLINE_ROUTINE void _Watchdog_Activate(                         
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
                                                                      
  the_watchdog->state = WATCHDOG_ACTIVE;                              
   4892e:	7602           	moveq #2,%d3                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
   48930:	2451           	moveal %a1@,%a2                             
     }                                                                
  }                                                                   
                                                                      
  _Watchdog_Activate( the_watchdog );                                 
                                                                      
  the_watchdog->delta_interval = delta_interval;                      
   48932:	2140 0010      	movel %d0,%a0@(16)                          
                                                                      
  _Chain_Insert_unprotected( after->Node.previous, &the_watchdog->Node );
                                                                      
  the_watchdog->start_time = _Watchdog_Ticks_since_boot;              
   48936:	2039 0005 d928 	movel 5d928 <_Watchdog_Ticks_since_boot>,%d0
   4893c:	2143 0008      	movel %d3,%a0@(8)                           
  Chain_Node *the_node                                                
)                                                                     
{                                                                     
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
   48940:	2149 0004      	movel %a1,%a0@(4)                           
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
   48944:	2288           	movel %a0,%a1@                              
  the_node->next        = before_node;                                
  before_node->previous = the_node;                                   
   48946:	2548 0004      	movel %a0,%a2@(4)                           
  Chain_Node *before_node;                                            
                                                                      
  the_node->previous    = after_node;                                 
  before_node           = after_node->next;                           
  after_node->next      = the_node;                                   
  the_node->next        = before_node;                                
   4894a:	208a           	movel %a2,%a0@                              
   4894c:	2140 0014      	movel %d0,%a0@(20)                          
                                                                      
exit_insert:                                                          
  _Watchdog_Sync_level = insert_isr_nest_level;                       
   48950:	23c2 0005 d8cc 	movel %d2,5d8cc <_Watchdog_Sync_level>      
  _Watchdog_Sync_count--;                                             
   48956:	2039 0005 d924 	movel 5d924 <_Watchdog_Sync_count>,%d0      
   4895c:	5380           	subql #1,%d0                                
   4895e:	23c0 0005 d924 	movel %d0,5d924 <_Watchdog_Sync_count>      
  _ISR_Enable( level );                                               
   48964:	46c1           	movew %d1,%sr                               
}                                                                     
   48966:	4cd7 0c1c      	moveml %sp@,%d2-%d4/%a2-%a3                 
   4896a:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

000489c8 <_Watchdog_Remove>: { ISR_Level level; Watchdog_States previous_state; Watchdog_Control *next_watchdog; _ISR_Disable( level );
   489c8:	203c 0000 0700 	movel #1792,%d0                             
 */                                                                   
                                                                      
Watchdog_States _Watchdog_Remove(                                     
  Watchdog_Control *the_watchdog                                      
)                                                                     
{                                                                     
   489ce:	4e56 0000      	linkw %fp,#0                                
   489d2:	206e 0008      	moveal %fp@(8),%a0                          
   489d6:	2f0a           	movel %a2,%sp@-                             
   489d8:	2f02           	movel %d2,%sp@-                             
  ISR_Level         level;                                            
  Watchdog_States   previous_state;                                   
  Watchdog_Control *next_watchdog;                                    
                                                                      
  _ISR_Disable( level );                                              
   489da:	40c1           	movew %sr,%d1                               
   489dc:	8081           	orl %d1,%d0                                 
   489de:	46c0           	movew %d0,%sr                               
  previous_state = the_watchdog->state;                               
   489e0:	2028 0008      	movel %a0@(8),%d0                           
  switch ( previous_state ) {                                         
   489e4:	7401           	moveq #1,%d2                                
   489e6:	b480           	cmpl %d0,%d2                                
   489e8:	670c           	beqs 489f6 <_Watchdog_Remove+0x2e>          
   489ea:	6242           	bhis 48a2e <_Watchdog_Remove+0x66>          
   489ec:	143c 0003      	moveb #3,%d2                                
   489f0:	b480           	cmpl %d0,%d2                                
   489f2:	653a           	bcss 48a2e <_Watchdog_Remove+0x66>          <== NEVER TAKEN
   489f4:	6006           	bras 489fc <_Watchdog_Remove+0x34>          
                                                                      
      /*                                                              
       *  It is not actually on the chain so just change the state and
       *  the Insert operation we interrupted will be aborted.        
       */                                                             
      the_watchdog->state = WATCHDOG_INACTIVE;                        
   489f6:	42a8 0008      	clrl %a0@(8)                                
      break;                                                          
   489fa:	6032           	bras 48a2e <_Watchdog_Remove+0x66>          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
                                                                      
  _ISR_Enable( level );                                               
  return( previous_state );                                           
}                                                                     
   489fc:	2250           	moveal %a0@,%a1                             
      break;                                                          
                                                                      
    case WATCHDOG_ACTIVE:                                             
    case WATCHDOG_REMOVE_IT:                                          
                                                                      
      the_watchdog->state = WATCHDOG_INACTIVE;                        
   489fe:	42a8 0008      	clrl %a0@(8)                                
      next_watchdog = _Watchdog_Next( the_watchdog );                 
                                                                      
      if ( _Watchdog_Next(next_watchdog) )                            
   48a02:	4a91           	tstl %a1@                                   
   48a04:	6708           	beqs 48a0e <_Watchdog_Remove+0x46>          
        next_watchdog->delta_interval += the_watchdog->delta_interval;
   48a06:	2428 0010      	movel %a0@(16),%d2                          
   48a0a:	d5a9 0010      	addl %d2,%a1@(16)                           
                                                                      
      if ( _Watchdog_Sync_count )                                     
   48a0e:	2479 0005 d924 	moveal 5d924 <_Watchdog_Sync_count>,%a2     
   48a14:	4a8a           	tstl %a2                                    
   48a16:	670c           	beqs 48a24 <_Watchdog_Remove+0x5c>          
        _Watchdog_Sync_level = _ISR_Nest_level;                       
   48a18:	45f9 0005 d9b8 	lea 5d9b8 <_Per_CPU_Information+0x8>,%a2    
   48a1e:	23d2 0005 d8cc 	movel %a2@,5d8cc <_Watchdog_Sync_level>     
{                                                                     
  Chain_Node *next;                                                   
  Chain_Node *previous;                                               
                                                                      
  next           = the_node->next;                                    
  previous       = the_node->previous;                                
   48a24:	2468 0004      	moveal %a0@(4),%a2                          
  next->previous = previous;                                          
   48a28:	234a 0004      	movel %a2,%a1@(4)                           
  previous->next = next;                                              
   48a2c:	2489           	movel %a1,%a2@                              
                                                                      
      _Chain_Extract_unprotected( &the_watchdog->Node );              
      break;                                                          
  }                                                                   
  the_watchdog->stop_time = _Watchdog_Ticks_since_boot;               
   48a2e:	2279 0005 d928 	moveal 5d928 <_Watchdog_Ticks_since_boot>,%a1
   48a34:	2149 0018      	movel %a1,%a0@(24)                          
                                                                      
  _ISR_Enable( level );                                               
   48a38:	46c1           	movew %d1,%sr                               
  return( previous_state );                                           
}                                                                     
   48a3a:	241f           	movel %sp@+,%d2                             
   48a3c:	245f           	moveal %sp@+,%a2                            
   48a3e:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

000463cc <rtems_chain_get_with_notification>: rtems_chain_control *chain, rtems_id task, rtems_event_set events, rtems_chain_node **node ) {
   463cc:	4e56 0000      	linkw %fp,#0                                
   463d0:	2f03           	movel %d3,%sp@-                             
   463d2:	262e 0010      	movel %fp@(16),%d3                          
   463d6:	2f02           	movel %d2,%sp@-                             
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 );                  
   463d8:	2f2e 0014      	movel %fp@(20),%sp@-                        
   463dc:	2f2e 0008      	movel %fp@(8),%sp@-                         
   463e0:	242e 000c      	movel %fp@(12),%d2                          
   463e4:	4eb9 0004 6970 	jsr 46970 <_Chain_Get_with_empty_check>     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  bool is_empty = rtems_chain_get_with_empty_check( chain, node );    
                                                                      
  if ( is_empty ) {                                                   
   463ea:	508f           	addql #8,%sp                                
   463ec:	4a00           	tstb %d0                                    
   463ee:	6718           	beqs 46408 <rtems_chain_get_with_notification+0x3c><== NEVER TAKEN
    sc = rtems_event_send( task, events );                            
   463f0:	2d43 000c      	movel %d3,%fp@(12)                          
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
   463f4:	262e fffc      	movel %fp@(-4),%d3                          
{                                                                     
  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 );                            
   463f8:	2d42 0008      	movel %d2,%fp@(8)                           
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
   463fc:	242e fff8      	movel %fp@(-8),%d2                          
   46400:	4e5e           	unlk %fp                                    
{                                                                     
  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 );                            
   46402:	4ef9 0004 59f8 	jmp 459f8 <rtems_event_send>                
  }                                                                   
                                                                      
  return sc;                                                          
}                                                                     
   46408:	242e fff8      	movel %fp@(-8),%d2                          
   4640c:	4280           	clrl %d0                                    
   4640e:	262e fffc      	movel %fp@(-4),%d3                          
   46412:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00046418 <rtems_chain_get_with_wait>: rtems_chain_control *chain, rtems_event_set events, rtems_interval timeout, rtems_chain_node **node_ptr ) {
   46418:	4e56 ffe0      	linkw %fp,#-32                              
   4641c:	48d7 0c7c      	moveml %d2-%d6/%a2-%a3,%sp@                 
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
   46420:	260e           	movel %fp,%d3                               
 */                                                                   
RTEMS_INLINE_ROUTINE rtems_chain_node *rtems_chain_get(               
  rtems_chain_control *the_chain                                      
)                                                                     
{                                                                     
  return _Chain_Get( the_chain );                                     
   46422:	47f9 0004 69b8 	lea 469b8 <_Chain_Get>,%a3                  
   46428:	5983           	subql #4,%d3                                
   4642a:	45f9 0004 5890 	lea 45890 <rtems_event_receive>,%a2         
  rtems_chain_control *chain,                                         
  rtems_event_set events,                                             
  rtems_interval timeout,                                             
  rtems_chain_node **node_ptr                                         
)                                                                     
{                                                                     
   46430:	2c2e 0008      	movel %fp@(8),%d6                           
   46434:	2a2e 000c      	movel %fp@(12),%d5                          
   46438:	282e 0010      	movel %fp@(16),%d4                          
   4643c:	6012           	bras 46450 <rtems_chain_get_with_wait+0x38> 
  while (                                                             
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
  ) {                                                                 
    rtems_event_set out;                                              
    sc = rtems_event_receive(                                         
   4643e:	2f03           	movel %d3,%sp@-                             
   46440:	2f04           	movel %d4,%sp@-                             
   46442:	42a7           	clrl %sp@-                                  
   46444:	2f05           	movel %d5,%sp@-                             
   46446:	4e92           	jsr %a2@                                    
)                                                                     
{                                                                     
  rtems_status_code sc = RTEMS_SUCCESSFUL;                            
  rtems_chain_node *node = NULL;                                      
                                                                      
  while (                                                             
   46448:	4fef 0010      	lea %sp@(16),%sp                            
   4644c:	4a80           	tstl %d0                                    
   4644e:	660c           	bnes 4645c <rtems_chain_get_with_wait+0x44> <== ALWAYS TAKEN
   46450:	2f06           	movel %d6,%sp@-                             
   46452:	4e93           	jsr %a3@                                    
    sc == RTEMS_SUCCESSFUL                                            
      && (node = rtems_chain_get( chain )) == NULL                    
   46454:	588f           	addql #4,%sp                                
   46456:	2400           	movel %d0,%d2                               
   46458:	67e4           	beqs 4643e <rtems_chain_get_with_wait+0x26> 
   4645a:	4280           	clrl %d0                                    
      timeout,                                                        
      &out                                                            
    );                                                                
  }                                                                   
                                                                      
  *node_ptr = node;                                                   
   4645c:	206e 0014      	moveal %fp@(20),%a0                         
   46460:	2082           	movel %d2,%a0@                              
                                                                      
  return sc;                                                          
}                                                                     
   46462:	4cee 0c7c ffe0 	moveml %fp@(-32),%d2-%d6/%a2-%a3            
   46468:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00046ff4 <rtems_extension_create>: rtems_status_code rtems_extension_create( rtems_name name, const rtems_extensions_table *extension_table, rtems_id *id ) {
   46ff4:	4e56 fff4      	linkw %fp,#-12                              
   46ff8:	48d7 0c04      	moveml %d2/%a2-%a3,%sp@                     
   46ffc:	242e 0008      	movel %fp@(8),%d2                           
   47000:	266e 0010      	moveal %fp@(16),%a3                         
  Extension_Control *the_extension;                                   
                                                                      
  if ( !id )                                                          
   47004:	4a8b           	tstl %a3                                    
   47006:	6778           	beqs 47080 <rtems_extension_create+0x8c>    <== NEVER TAKEN
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
   47008:	4a82           	tstl %d2                                    
   4700a:	6778           	beqs 47084 <rtems_extension_create+0x90>    <== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level++;                                 
   4700c:	2039 0005 f9e8 	movel 5f9e8 <_Thread_Dispatch_disable_level>,%d0
   47012:	5280           	addql #1,%d0                                
   47014:	23c0 0005 f9e8 	movel %d0,5f9e8 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   4701a:	2039 0005 f9e8 	movel 5f9e8 <_Thread_Dispatch_disable_level>,%d0
#ifndef __EXTENSION_MANAGER_inl                                       
#define __EXTENSION_MANAGER_inl                                       
                                                                      
RTEMS_INLINE_ROUTINE Extension_Control *_Extension_Allocate( void )   
{                                                                     
  return (Extension_Control *) _Objects_Allocate( &_Extension_Information );
   47020:	4879 0005 fb44 	pea 5fb44 <_Extension_Information>          
   47026:	4eb9 0004 7d88 	jsr 47d88 <_Objects_Allocate>               
                                                                      
  _Thread_Disable_dispatch();         /* to prevent deletion */       
                                                                      
  the_extension = _Extension_Allocate();                              
                                                                      
  if ( !the_extension ) {                                             
   4702c:	588f           	addql #4,%sp                                
   4702e:	2440           	moveal %d0,%a2                              
   47030:	4a80           	tstl %d0                                    
   47032:	660a           	bnes 4703e <rtems_extension_create+0x4a>    
    _Thread_Enable_dispatch();                                        
   47034:	4eb9 0004 8e68 	jsr 48e68 <_Thread_Enable_dispatch>         
    return RTEMS_TOO_MANY;                                            
   4703a:	7005           	moveq #5,%d0                                
   4703c:	6048           	bras 47086 <rtems_extension_create+0x92>    
RTEMS_INLINE_ROUTINE void _User_extensions_Add_set_with_table(        
  User_extensions_Control     *extension,                             
  const User_extensions_Table *extension_table                        
)                                                                     
{                                                                     
  extension->Callouts = *extension_table;                             
   4703e:	4878 0020      	pea 20 <OPER2+0xc>                          
   47042:	2f2e 000c      	movel %fp@(12),%sp@-                        
   47046:	486a 0024      	pea %a2@(36)                                
   4704a:	4eb9 0004 d9dc 	jsr 4d9dc <memcpy>                          
                                                                      
  _User_extensions_Add_set( extension );                              
   47050:	486a 0010      	pea %a2@(16)                                
   47054:	4eb9 0004 98b0 	jsr 498b0 <_User_extensions_Add_set>        
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
   4705a:	202a 0008      	movel %a2@(8),%d0                           
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
   4705e:	4281           	clrl %d1                                    
   47060:	2079 0005 fb5c 	moveal 5fb5c <_Extension_Information+0x18>,%a0
   47066:	3200           	movew %d0,%d1                               
   47068:	218a 1c00      	movel %a2,%a0@(00000000,%d1:l:4)            
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
   4706c:	2542 000c      	movel %d2,%a2@(12)                          
    &_Extension_Information,                                          
    &the_extension->Object,                                           
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_extension->Object.id;                                     
   47070:	2680           	movel %d0,%a3@                              
  _Thread_Enable_dispatch();                                          
   47072:	4eb9 0004 8e68 	jsr 48e68 <_Thread_Enable_dispatch>         
  return RTEMS_SUCCESSFUL;                                            
   47078:	4fef 0010      	lea %sp@(16),%sp                            
   4707c:	4280           	clrl %d0                                    
   4707e:	6006           	bras 47086 <rtems_extension_create+0x92>    
)                                                                     
{                                                                     
  Extension_Control *the_extension;                                   
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
   47080:	7009           	moveq #9,%d0                                
   47082:	6002           	bras 47086 <rtems_extension_create+0x92>    
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
   47084:	7003           	moveq #3,%d0                                
  );                                                                  
                                                                      
  *id = the_extension->Object.id;                                     
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
   47086:	4cee 0c04 fff4 	moveml %fp@(-12),%d2/%a2-%a3                
   4708c:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00046e18 <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 ) {
   46e18:	4e56 0000      	linkw %fp,#0                                
   46e1c:	206e 000c      	moveal %fp@(12),%a0                         
   46e20:	2f0a           	movel %a2,%sp@-                             
   46e22:	226e 0010      	moveal %fp@(16),%a1                         
   46e26:	2f02           	movel %d2,%sp@-                             
   46e28:	242e 0008      	movel %fp@(8),%d2                           
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
   46e2c:	2039 0006 0e4c 	movel 60e4c <_IO_Number_of_drivers>,%d0     
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
   46e32:	4ab9 0006 0dd0 	tstl 60dd0 <_Per_CPU_Information+0x8>       
   46e38:	6600 00de      	bnew 46f18 <rtems_io_register_driver+0x100> 
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
   46e3c:	4a89           	tstl %a1                                    
   46e3e:	6700 00dc      	beqw 46f1c <rtems_io_register_driver+0x104> 
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
   46e42:	2280           	movel %d0,%a1@                              
                                                                      
  if ( driver_table == NULL )                                         
   46e44:	4a88           	tstl %a0                                    
   46e46:	6700 00d4      	beqw 46f1c <rtems_io_register_driver+0x104> 
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
   46e4a:	4a90           	tstl %a0@                                   
   46e4c:	6600 00e0      	bnew 46f2e <rtems_io_register_driver+0x116> 
   46e50:	4aa8 0004      	tstl %a0@(4)                                
   46e54:	6600 00d8      	bnew 46f2e <rtems_io_register_driver+0x116> 
   46e58:	6000 00c2      	braw 46f1c <rtems_io_register_driver+0x104> 
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level++;                                 
   46e5c:	2039 0006 0c40 	movel 60c40 <_Thread_Dispatch_disable_level>,%d0
   46e62:	5280           	addql #1,%d0                                
   46e64:	23c0 0006 0c40 	movel %d0,60c40 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   46e6a:	2039 0006 0c40 	movel 60c40 <_Thread_Dispatch_disable_level>,%d0
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( major == 0 ) {                                                 
   46e70:	4a82           	tstl %d2                                    
   46e72:	662c           	bnes 46ea0 <rtems_io_register_driver+0x88>  
                                                                      
static rtems_status_code rtems_io_obtain_major_number(                
  rtems_device_major_number *major                                    
)                                                                     
{                                                                     
  rtems_device_major_number n = _IO_Number_of_drivers;                
   46e74:	2039 0006 0e4c 	movel 60e4c <_IO_Number_of_drivers>,%d0     
   46e7a:	2479 0006 0e50 	moveal 60e50 <_IO_Driver_address_table>,%a2 
   46e80:	6010           	bras 46e92 <rtems_io_register_driver+0x7a>  
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
   46e82:	4a92           	tstl %a2@                                   
   46e84:	6600 00b0      	bnew 46f36 <rtems_io_register_driver+0x11e> 
   46e88:	4aaa 0004      	tstl %a2@(4)                                
   46e8c:	6600 00a8      	bnew 46f36 <rtems_io_register_driver+0x11e> 
   46e90:	6004           	bras 46e96 <rtems_io_register_driver+0x7e>  
  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 ) {                                         
   46e92:	b082           	cmpl %d2,%d0                                
   46e94:	66ec           	bnes 46e82 <rtems_io_register_driver+0x6a>  
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
   46e96:	2282           	movel %d2,%a1@                              
                                                                      
  if ( m != n )                                                       
   46e98:	b082           	cmpl %d2,%d0                                
   46e9a:	6638           	bnes 46ed4 <rtems_io_register_driver+0xbc>  
   46e9c:	6000 00a2      	braw 46f40 <rtems_io_register_driver+0x128> 
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
   46ea0:	2202           	movel %d2,%d1                               
   46ea2:	2002           	movel %d2,%d0                               
   46ea4:	e789           	lsll #3,%d1                                 
   46ea6:	eb88           	lsll #5,%d0                                 
   46ea8:	2479 0006 0e50 	moveal 60e50 <_IO_Driver_address_table>,%a2 
   46eae:	9081           	subl %d1,%d0                                
   46eb0:	d5c0           	addal %d0,%a2                               
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
   46eb2:	4a92           	tstl %a2@                                   
   46eb4:	660c           	bnes 46ec2 <rtems_io_register_driver+0xaa>  
    return RTEMS_SUCCESSFUL;                                          
                                                                      
  return RTEMS_TOO_MANY;                                              
}                                                                     
                                                                      
rtems_status_code rtems_io_register_driver(                           
   46eb6:	4aaa 0004      	tstl %a2@(4)                                
   46eba:	57c0           	seq %d0                                     
   46ebc:	49c0           	extbl %d0                                   
   46ebe:	4480           	negl %d0                                    
   46ec0:	6002           	bras 46ec4 <rtems_io_register_driver+0xac>  
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
   46ec2:	4280           	clrl %d0                                    
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
                                                                      
    if ( !rtems_io_is_empty_table( table ) ) {                        
   46ec4:	4a00           	tstb %d0                                    
   46ec6:	660a           	bnes 46ed2 <rtems_io_register_driver+0xba>  
      _Thread_Enable_dispatch();                                      
   46ec8:	4eb9 0004 8b0c 	jsr 48b0c <_Thread_Enable_dispatch>         
      return RTEMS_RESOURCE_IN_USE;                                   
   46ece:	700c           	moveq #12,%d0                               
   46ed0:	6050           	bras 46f22 <rtems_io_register_driver+0x10a> 
    }                                                                 
                                                                      
    *registered_major = major;                                        
   46ed2:	2282           	movel %d2,%a1@                              
  }                                                                   
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
   46ed4:	2202           	movel %d2,%d1                               
   46ed6:	2002           	movel %d2,%d0                               
   46ed8:	4878 0018      	pea 18 <OPER2+0x4>                          
   46edc:	e789           	lsll #3,%d1                                 
   46ede:	eb88           	lsll #5,%d0                                 
   46ee0:	2f08           	movel %a0,%sp@-                             
   46ee2:	9081           	subl %d1,%d0                                
   46ee4:	d0b9 0006 0e50 	addl 60e50 <_IO_Driver_address_table>,%d0   
   46eea:	2f00           	movel %d0,%sp@-                             
   46eec:	4eb9 0004 fe5c 	jsr 4fe5c <memcpy>                          
                                                                      
  _Thread_Enable_dispatch();                                          
   46ef2:	4eb9 0004 8b0c 	jsr 48b0c <_Thread_Enable_dispatch>         
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
   46ef8:	246e fffc      	moveal %fp@(-4),%a2                         
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
   46efc:	4fef 000c      	lea %sp@(12),%sp                            
   46f00:	2d42 0008      	movel %d2,%fp@(8)                           
}                                                                     
   46f04:	242e fff8      	movel %fp@(-8),%d2                          
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
   46f08:	42ae 0010      	clrl %fp@(16)                               
   46f0c:	42ae 000c      	clrl %fp@(12)                               
}                                                                     
   46f10:	4e5e           	unlk %fp                                    
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
   46f12:	4ef9 0004 db1c 	jmp 4db1c <rtems_io_initialize>             
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
    return RTEMS_CALLED_FROM_ISR;                                     
   46f18:	7012           	moveq #18,%d0                               
   46f1a:	6006           	bras 46f22 <rtems_io_register_driver+0x10a> 
                                                                      
  if ( driver_table == NULL )                                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
   46f1c:	7009           	moveq #9,%d0                                
   46f1e:	6002           	bras 46f22 <rtems_io_register_driver+0x10a> 
                                                                      
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
   46f20:	700a           	moveq #10,%d0                               
  _IO_Driver_address_table [major] = *driver_table;                   
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
}                                                                     
   46f22:	242e fff8      	movel %fp@(-8),%d2                          
   46f26:	246e fffc      	moveal %fp@(-4),%a2                         
   46f2a:	4e5e           	unlk %fp                                    
   46f2c:	4e75           	rts                                         
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
   46f2e:	b082           	cmpl %d2,%d0                                
   46f30:	63ee           	blss 46f20 <rtems_io_register_driver+0x108> 
   46f32:	6000 ff28      	braw 46e5c <rtems_io_register_driver+0x44>  
  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 ) {                                         
   46f36:	5282           	addql #1,%d2                                
   46f38:	45ea 0018      	lea %a2@(24),%a2                            
   46f3c:	6000 ff54      	braw 46e92 <rtems_io_register_driver+0x7a>  
                                                                      
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
   46f40:	4eb9 0004 8b0c 	jsr 48b0c <_Thread_Enable_dispatch>         
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
    return RTEMS_SUCCESSFUL;                                          
                                                                      
  return RTEMS_TOO_MANY;                                              
   46f46:	7005           	moveq #5,%d0                                
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
   46f48:	60d8           	bras 46f22 <rtems_io_register_driver+0x10a> 
	...                                                                  
                                                                      

00047d30 <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) {
   47d30:	4e56 fff0      	linkw %fp,#-16                              
   47d34:	48d7 1c04      	moveml %d2/%a2-%a4,%sp@                     
   47d38:	286e 0008      	moveal %fp@(8),%a4                          
  uint32_t             i;                                             
  uint32_t             api_index;                                     
  Thread_Control      *the_thread;                                    
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
   47d3c:	4a8c           	tstl %a4                                    
   47d3e:	673c           	beqs 47d7c <rtems_iterate_over_all_threads+0x4c><== NEVER TAKEN
   47d40:	45f9 0005 f9a8 	lea 5f9a8 <_Objects_Information_table+0x4>,%a2
    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 ] )                 
   47d46:	205a           	moveal %a2@+,%a0                            
   47d48:	4a88           	tstl %a0                                    
   47d4a:	6728           	beqs 47d74 <rtems_iterate_over_all_threads+0x44>
        continue;                                                     
    #endif                                                            
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
   47d4c:	2668 0004      	moveal %a0@(4),%a3                          
    if ( !information )                                               
   47d50:	4a8b           	tstl %a3                                    
   47d52:	6720           	beqs 47d74 <rtems_iterate_over_all_threads+0x44>
   47d54:	7401           	moveq #1,%d2                                
   47d56:	6012           	bras 47d6a <rtems_iterate_over_all_threads+0x3a>
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
      the_thread = (Thread_Control *)information->local_table[ i ];   
   47d58:	206b 0018      	moveal %a3@(24),%a0                         
   47d5c:	2030 2c00      	movel %a0@(00000000,%d2:l:4),%d0            
                                                                      
      if ( !the_thread )                                              
   47d60:	6706           	beqs 47d68 <rtems_iterate_over_all_threads+0x38><== NEVER TAKEN
	continue;                                                            
                                                                      
      (*routine)(the_thread);                                         
   47d62:	2f00           	movel %d0,%sp@-                             
   47d64:	4e94           	jsr %a4@                                    
   47d66:	588f           	addql #4,%sp                                
                                                                      
    information = _Objects_Information_table[ api_index ][ 1 ];       
    if ( !information )                                               
      continue;                                                       
                                                                      
    for ( i=1 ; i <= information->maximum ; i++ ) {                   
   47d68:	5282           	addql #1,%d2                                
   47d6a:	4280           	clrl %d0                                    
   47d6c:	302b 000e      	movew %a3@(14),%d0                          
   47d70:	b082           	cmpl %d2,%d0                                
   47d72:	64e4           	bccs 47d58 <rtems_iterate_over_all_threads+0x28>
  Objects_Information *information;                                   
                                                                      
  if ( !routine )                                                     
    return;                                                           
                                                                      
  for ( api_index = 1 ; api_index <= OBJECTS_APIS_LAST ; api_index++ ) {
   47d74:	b5fc 0005 f9b4 	cmpal #391604,%a2                           
   47d7a:	66ca           	bnes 47d46 <rtems_iterate_over_all_threads+0x16>
                                                                      
      (*routine)(the_thread);                                         
    }                                                                 
  }                                                                   
                                                                      
}                                                                     
   47d7c:	4cee 1c04 fff0 	moveml %fp@(-16),%d2/%a2-%a4                
   47d82:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004af50 <rtems_message_queue_delete>: */ rtems_status_code rtems_message_queue_delete( rtems_id id ) {
   4af50:	4e56 fffc      	linkw %fp,#-4                               
   4af54:	2f0a           	movel %a2,%sp@-                             
RTEMS_INLINE_ROUTINE Message_queue_Control *_Message_queue_Get (      
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Message_queue_Control *)                                    
   4af56:	486e fffc      	pea %fp@(-4)                                
   4af5a:	2f2e 0008      	movel %fp@(8),%sp@-                         
   4af5e:	4879 0005 fb94 	pea 5fb94 <_Message_queue_Information>      
   4af64:	4eb9 0004 7a20 	jsr 47a20 <_Objects_Get>                    
  register Message_queue_Control *the_message_queue;                  
  Objects_Locations               location;                           
                                                                      
  the_message_queue = _Message_queue_Get( id, &location );            
  switch ( location ) {                                               
   4af6a:	4fef 000c      	lea %sp@(12),%sp                            
   4af6e:	2440           	moveal %d0,%a2                              
   4af70:	4aae fffc      	tstl %fp@(-4)                               
   4af74:	663a           	bnes 4afb0 <rtems_message_queue_delete+0x60><== NEVER TAKEN
                                                                      
    case OBJECTS_LOCAL:                                               
      _Objects_Close( &_Message_queue_Information,                    
   4af76:	2f00           	movel %d0,%sp@-                             
   4af78:	4879 0005 fb94 	pea 5fb94 <_Message_queue_Information>      
   4af7e:	4eb9 0004 763c 	jsr 4763c <_Objects_Close>                  
                      &the_message_queue->Object );                   
                                                                      
      _CORE_message_queue_Close(                                      
   4af84:	4878 0005      	pea 5 <COMPARE>                             
   4af88:	42a7           	clrl %sp@-                                  
   4af8a:	486a 0014      	pea %a2@(20)                                
   4af8e:	4eb9 0004 b4d0 	jsr 4b4d0 <_CORE_message_queue_Close>       
 */                                                                   
RTEMS_INLINE_ROUTINE void _Message_queue_Free (                       
  Message_queue_Control *the_message_queue                            
)                                                                     
{                                                                     
  _Objects_Free( &_Message_queue_Information, &the_message_queue->Object );
   4af94:	2f0a           	movel %a2,%sp@-                             
   4af96:	4879 0005 fb94 	pea 5fb94 <_Message_queue_Information>      
   4af9c:	4eb9 0004 78bc 	jsr 478bc <_Objects_Free>                   
          0,                                 /* Not used */           
          0                                                           
        );                                                            
      }                                                               
#endif                                                                
      _Thread_Enable_dispatch();                                      
   4afa2:	4eb9 0004 85d4 	jsr 485d4 <_Thread_Enable_dispatch>         
      return RTEMS_SUCCESSFUL;                                        
   4afa8:	4fef 001c      	lea %sp@(28),%sp                            
   4afac:	4280           	clrl %d0                                    
   4afae:	6002           	bras 4afb2 <rtems_message_queue_delete+0x62>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   4afb0:	7004           	moveq #4,%d0                                
}                                                                     
   4afb2:	246e fff8      	moveal %fp@(-8),%a2                         
   4afb6:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004f7dc <rtems_partition_get_buffer>: rtems_status_code rtems_partition_get_buffer( rtems_id id, void **buffer ) {
   4f7dc:	4e56 fff0      	linkw %fp,#-16                              
   4f7e0:	48d7 0c04      	moveml %d2/%a2-%a3,%sp@                     
   4f7e4:	266e 000c      	moveal %fp@(12),%a3                         
  register Partition_Control *the_partition;                          
  Objects_Locations           location;                               
  void                       *the_buffer;                             
                                                                      
  if ( !buffer )                                                      
   4f7e8:	4a8b           	tstl %a3                                    
   4f7ea:	6748           	beqs 4f834 <rtems_partition_get_buffer+0x58><== NEVER TAKEN
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (              
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Partition_Control *)                                        
   4f7ec:	486e fffc      	pea %fp@(-4)                                
   4f7f0:	2f2e 0008      	movel %fp@(8),%sp@-                         
   4f7f4:	4879 0007 5504 	pea 75504 <_Partition_Information>          
   4f7fa:	4eb9 0005 3d18 	jsr 53d18 <_Objects_Get>                    
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_partition = _Partition_Get( id, &location );                    
  switch ( location ) {                                               
   4f800:	4fef 000c      	lea %sp@(12),%sp                            
   4f804:	2440           	moveal %d0,%a2                              
   4f806:	4aae fffc      	tstl %fp@(-4)                               
   4f80a:	662c           	bnes 4f838 <rtems_partition_get_buffer+0x5c>
 */                                                                   
RTEMS_INLINE_ROUTINE void *_Partition_Allocate_buffer (               
   Partition_Control *the_partition                                   
)                                                                     
{                                                                     
  return _Chain_Get( &the_partition->Memory );                        
   4f80c:	486a 0024      	pea %a2@(36)                                
   4f810:	4eb9 0005 2468 	jsr 52468 <_Chain_Get>                      
                                                                      
    case OBJECTS_LOCAL:                                               
      the_buffer = _Partition_Allocate_buffer( the_partition );       
      if ( the_buffer ) {                                             
   4f816:	588f           	addql #4,%sp                                
   4f818:	41f9 0005 4940 	lea 54940 <_Thread_Enable_dispatch>,%a0     
   4f81e:	2400           	movel %d0,%d2                               
   4f820:	670c           	beqs 4f82e <rtems_partition_get_buffer+0x52>
        the_partition->number_of_used_blocks += 1;                    
   4f822:	52aa 0020      	addql #1,%a2@(32)                           
        _Thread_Enable_dispatch();                                    
   4f826:	4e90           	jsr %a0@                                    
        *buffer = the_buffer;                                         
        return RTEMS_SUCCESSFUL;                                      
   4f828:	4280           	clrl %d0                                    
    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;                                         
   4f82a:	2682           	movel %d2,%a3@                              
        return RTEMS_SUCCESSFUL;                                      
   4f82c:	600c           	bras 4f83a <rtems_partition_get_buffer+0x5e>
      }                                                               
      _Thread_Enable_dispatch();                                      
   4f82e:	4e90           	jsr %a0@                                    
      return RTEMS_UNSATISFIED;                                       
   4f830:	700d           	moveq #13,%d0                               
   4f832:	6006           	bras 4f83a <rtems_partition_get_buffer+0x5e>
  register Partition_Control *the_partition;                          
  Objects_Locations           location;                               
  void                       *the_buffer;                             
                                                                      
  if ( !buffer )                                                      
    return RTEMS_INVALID_ADDRESS;                                     
   4f834:	7009           	moveq #9,%d0                                
   4f836:	6002           	bras 4f83a <rtems_partition_get_buffer+0x5e>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   4f838:	7004           	moveq #4,%d0                                
}                                                                     
   4f83a:	4cee 0c04 fff0 	moveml %fp@(-16),%d2/%a2-%a3                
   4f840:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

0004f870 <rtems_partition_return_buffer>: rtems_status_code rtems_partition_return_buffer( rtems_id id, void *buffer ) {
   4f870:	4e56 fffc      	linkw %fp,#-4                               
   4f874:	2f0a           	movel %a2,%sp@-                             
   4f876:	2f02           	movel %d2,%sp@-                             
RTEMS_INLINE_ROUTINE Partition_Control *_Partition_Get (              
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Partition_Control *)                                        
   4f878:	486e fffc      	pea %fp@(-4)                                
   4f87c:	2f2e 0008      	movel %fp@(8),%sp@-                         
   4f880:	4879 0007 5504 	pea 75504 <_Partition_Information>          
   4f886:	242e 000c      	movel %fp@(12),%d2                          
   4f88a:	4eb9 0005 3d18 	jsr 53d18 <_Objects_Get>                    
  register Partition_Control *the_partition;                          
  Objects_Locations           location;                               
                                                                      
  the_partition = _Partition_Get( id, &location );                    
  switch ( location ) {                                               
   4f890:	4fef 000c      	lea %sp@(12),%sp                            
   4f894:	2440           	moveal %d0,%a2                              
   4f896:	4aae fffc      	tstl %fp@(-4)                               
   4f89a:	663e           	bnes 4f8da <rtems_partition_return_buffer+0x6a>
)                                                                     
{                                                                     
  void *starting;                                                     
  void *ending;                                                       
                                                                      
  starting = the_partition->starting_address;                         
   4f89c:	202a 0010      	movel %a2@(16),%d0                          
  ending   = _Addresses_Add_offset( starting, the_partition->length );
   4f8a0:	222a 0014      	movel %a2@(20),%d1                          
  const void *address,                                                
  const void *base,                                                   
  const void *limit                                                   
)                                                                     
{                                                                     
  return (address >= base && address <= limit);                       
   4f8a4:	b082           	cmpl %d2,%d0                                
   4f8a6:	6240           	bhis 4f8e8 <rtems_partition_return_buffer+0x78>
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (                    
  const void *base,                                                   
  uintptr_t   offset                                                  
)                                                                     
{                                                                     
  return (void *)((uintptr_t)base + offset);                          
   4f8a8:	d280           	addl %d0,%d1                                
  const void *address,                                                
  const void *base,                                                   
  const void *limit                                                   
)                                                                     
{                                                                     
  return (address >= base && address <= limit);                       
   4f8aa:	b282           	cmpl %d2,%d1                                
   4f8ac:	653a           	bcss 4f8e8 <rtems_partition_return_buffer+0x78><== NEVER TAKEN
RTEMS_INLINE_ROUTINE int32_t _Addresses_Subtract (                    
  const void *left,                                                   
  const void *right                                                   
)                                                                     
{                                                                     
  return (int32_t) ((const char *) left - (const char *) right);      
   4f8ae:	2202           	movel %d2,%d1                               
   4f8b0:	9280           	subl %d0,%d1                                
   4f8b2:	2001           	movel %d1,%d0                               
  offset = (uint32_t) _Addresses_Subtract(                            
    the_buffer,                                                       
    the_partition->starting_address                                   
  );                                                                  
                                                                      
  return ((offset % the_partition->buffer_size) == 0);                
   4f8b4:	4c6a 0001 0018 	remul %a2@(24),%d1,%d0                      
                                                                      
  starting = the_partition->starting_address;                         
  ending   = _Addresses_Add_offset( starting, the_partition->length );
                                                                      
  return (                                                            
    _Addresses_Is_in_range( the_buffer, starting, ending ) &&         
   4f8ba:	4a81           	tstl %d1                                    
   4f8bc:	662a           	bnes 4f8e8 <rtems_partition_return_buffer+0x78>
RTEMS_INLINE_ROUTINE void _Partition_Free_buffer (                    
  Partition_Control *the_partition,                                   
  Chain_Node        *the_buffer                                       
)                                                                     
{                                                                     
  _Chain_Append( &the_partition->Memory, the_buffer );                
   4f8be:	2f02           	movel %d2,%sp@-                             
   4f8c0:	486a 0024      	pea %a2@(36)                                
   4f8c4:	4eb9 0005 2408 	jsr 52408 <_Chain_Append>                   
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( _Partition_Is_buffer_valid( buffer, the_partition ) ) {    
        _Partition_Free_buffer( the_partition, buffer );              
        the_partition->number_of_used_blocks -= 1;                    
   4f8ca:	53aa 0020      	subql #1,%a2@(32)                           
        _Thread_Enable_dispatch();                                    
   4f8ce:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
        return RTEMS_SUCCESSFUL;                                      
   4f8d4:	508f           	addql #8,%sp                                
   4f8d6:	4280           	clrl %d0                                    
   4f8d8:	6002           	bras 4f8dc <rtems_partition_return_buffer+0x6c>
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   4f8da:	7004           	moveq #4,%d0                                
}                                                                     
   4f8dc:	242e fff4      	movel %fp@(-12),%d2                         
   4f8e0:	246e fff8      	moveal %fp@(-8),%a2                         
   4f8e4:	4e5e           	unlk %fp                                    
   4f8e6:	4e75           	rts                                         
        _Partition_Free_buffer( the_partition, buffer );              
        the_partition->number_of_used_blocks -= 1;                    
        _Thread_Enable_dispatch();                                    
        return RTEMS_SUCCESSFUL;                                      
      }                                                               
      _Thread_Enable_dispatch();                                      
   4f8e8:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
      return RTEMS_INVALID_ADDRESS;                                   
   4f8ee:	7009           	moveq #9,%d0                                
   4f8f0:	60ea           	bras 4f8dc <rtems_partition_return_buffer+0x6c>
	...                                                                  
                                                                      

0004b79c <rtems_rate_monotonic_get_statistics>: rtems_status_code rtems_rate_monotonic_get_statistics( rtems_id id, rtems_rate_monotonic_period_statistics *statistics ) {
   4b79c:	4e56 fffc      	linkw %fp,#-4                               
   4b7a0:	2f0a           	movel %a2,%sp@-                             
   4b7a2:	246e 000c      	moveal %fp@(12),%a2                         
  Objects_Locations                        location;                  
  Rate_monotonic_Control                  *the_period;                
  rtems_rate_monotonic_period_statistics  *dst;                       
  Rate_monotonic_Statistics               *src;                       
                                                                      
  if ( !statistics )                                                  
   4b7a6:	4a8a           	tstl %a2                                    
   4b7a8:	6700 0096      	beqw 4b840 <rtems_rate_monotonic_get_statistics+0xa4>
   4b7ac:	486e fffc      	pea %fp@(-4)                                
   4b7b0:	2f2e 0008      	movel %fp@(8),%sp@-                         
   4b7b4:	4879 0005 f130 	pea 5f130 <_Rate_monotonic_Information>     
   4b7ba:	4eb9 0004 8510 	jsr 48510 <_Objects_Get>                    
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
  switch ( location ) {                                               
   4b7c0:	4fef 000c      	lea %sp@(12),%sp                            
   4b7c4:	2040           	moveal %d0,%a0                              
   4b7c6:	4aae fffc      	tstl %fp@(-4)                               
   4b7ca:	6678           	bnes 4b844 <rtems_rate_monotonic_get_statistics+0xa8><== NEVER TAKEN
                                                                      
    case OBJECTS_LOCAL:                                               
      dst = statistics;                                               
      src = &the_period->Statistics;                                  
      dst->count        = src->count;                                 
   4b7cc:	24a8 0054      	movel %a0@(84),%a2@                         
      dst->missed_count = src->missed_count;                          
   4b7d0:	2568 0058 0004 	movel %a0@(88),%a2@(4)                      
      #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                      
        _Timestamp_To_timespec( &src->min_cpu_time,   &dst->min_cpu_time );
   4b7d6:	2028 005c      	movel %a0@(92),%d0                          
   4b7da:	2228 0060      	movel %a0@(96),%d1                          
   4b7de:	2540 0008      	movel %d0,%a2@(8)                           
   4b7e2:	2541 000c      	movel %d1,%a2@(12)                          
        _Timestamp_To_timespec( &src->max_cpu_time,   &dst->max_cpu_time );
   4b7e6:	2028 0064      	movel %a0@(100),%d0                         
   4b7ea:	2228 0068      	movel %a0@(104),%d1                         
   4b7ee:	2540 0010      	movel %d0,%a2@(16)                          
   4b7f2:	2541 0014      	movel %d1,%a2@(20)                          
        _Timestamp_To_timespec( &src->total_cpu_time, &dst->total_cpu_time );
   4b7f6:	2028 006c      	movel %a0@(108),%d0                         
   4b7fa:	2228 0070      	movel %a0@(112),%d1                         
   4b7fe:	2540 0018      	movel %d0,%a2@(24)                          
   4b802:	2541 001c      	movel %d1,%a2@(28)                          
        _Timestamp_To_timespec( &src->min_wall_time,   &dst->min_wall_time );
   4b806:	2028 0074      	movel %a0@(116),%d0                         
   4b80a:	2228 0078      	movel %a0@(120),%d1                         
   4b80e:	2540 0020      	movel %d0,%a2@(32)                          
   4b812:	2541 0024      	movel %d1,%a2@(36)                          
        _Timestamp_To_timespec( &src->max_wall_time,   &dst->max_wall_time );
   4b816:	2028 007c      	movel %a0@(124),%d0                         
   4b81a:	2228 0080      	movel %a0@(128),%d1                         
   4b81e:	2540 0028      	movel %d0,%a2@(40)                          
   4b822:	2541 002c      	movel %d1,%a2@(44)                          
        _Timestamp_To_timespec( &src->total_wall_time, &dst->total_wall_time );
   4b826:	2028 0084      	movel %a0@(132),%d0                         
   4b82a:	2228 0088      	movel %a0@(136),%d1                         
   4b82e:	2540 0030      	movel %d0,%a2@(48)                          
   4b832:	2541 0034      	movel %d1,%a2@(52)                          
        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();                                      
   4b836:	4eb9 0004 9138 	jsr 49138 <_Thread_Enable_dispatch>         
      return RTEMS_SUCCESSFUL;                                        
   4b83c:	4280           	clrl %d0                                    
   4b83e:	6006           	bras 4b846 <rtems_rate_monotonic_get_statistics+0xaa>
  Rate_monotonic_Control                  *the_period;                
  rtems_rate_monotonic_period_statistics  *dst;                       
  Rate_monotonic_Statistics               *src;                       
                                                                      
  if ( !statistics )                                                  
    return RTEMS_INVALID_ADDRESS;                                     
   4b840:	7009           	moveq #9,%d0                                
   4b842:	6002           	bras 4b846 <rtems_rate_monotonic_get_statistics+0xaa>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   4b844:	7004           	moveq #4,%d0                                
}                                                                     
   4b846:	246e fff8      	moveal %fp@(-8),%a2                         
   4b84a:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00046552 <rtems_rate_monotonic_period>: rtems_status_code rtems_rate_monotonic_period( rtems_id id, rtems_interval length ) {
   46552:	4e56 ffec      	linkw %fp,#-20                              
   46556:	48d7 041c      	moveml %d2-%d4/%a2,%sp@                     
RTEMS_INLINE_ROUTINE Rate_monotonic_Control *_Rate_monotonic_Get (    
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Rate_monotonic_Control *)                                   
   4655a:	486e fffc      	pea %fp@(-4)                                
   4655e:	262e 0008      	movel %fp@(8),%d3                           
   46562:	2f03           	movel %d3,%sp@-                             
   46564:	4879 0005 f130 	pea 5f130 <_Rate_monotonic_Information>     
   4656a:	242e 000c      	movel %fp@(12),%d2                          
   4656e:	4eb9 0004 8510 	jsr 48510 <_Objects_Get>                    
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
   46574:	4fef 000c      	lea %sp@(12),%sp                            
   46578:	2440           	moveal %d0,%a2                              
   4657a:	4aae fffc      	tstl %fp@(-4)                               
   4657e:	6600 015a      	bnew 466da <rtems_rate_monotonic_period+0x188>
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
   46582:	2039 0005 f3b4 	movel 5f3b4 <_Per_CPU_Information+0xc>,%d0  
   46588:	b0aa 0040      	cmpl %a2@(64),%d0                           
   4658c:	670c           	beqs 4659a <rtems_rate_monotonic_period+0x48>
        _Thread_Enable_dispatch();                                    
   4658e:	4eb9 0004 9138 	jsr 49138 <_Thread_Enable_dispatch>         
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
   46594:	7417           	moveq #23,%d2                               
   46596:	6000 0144      	braw 466dc <rtems_rate_monotonic_period+0x18a>
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
   4659a:	4a82           	tstl %d2                                    
   4659c:	6624           	bnes 465c2 <rtems_rate_monotonic_period+0x70>
        switch ( the_period->state ) {                                
   4659e:	202a 0038      	movel %a2@(56),%d0                          
   465a2:	7204           	moveq #4,%d1                                
   465a4:	b280           	cmpl %d0,%d1                                
   465a6:	650e           	bcss 465b6 <rtems_rate_monotonic_period+0x64><== NEVER TAKEN
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
   465a8:	41f9 0005 c9ca 	lea 5c9ca <CSWTCH.2>,%a0                    
   465ae:	4282           	clrl %d2                                    
   465b0:	1430 0800      	moveb %a0@(00000000,%d0:l),%d2              
   465b4:	6002           	bras 465b8 <rtems_rate_monotonic_period+0x66>
        _Thread_Enable_dispatch();                                    
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
        switch ( the_period->state ) {                                
   465b6:	4282           	clrl %d2                                    <== NOT EXECUTED
          case RATE_MONOTONIC_ACTIVE:                                 
          default:              /* unreached -- only to remove warnings */
            return_value = RTEMS_SUCCESSFUL;                          
            break;                                                    
        }                                                             
        _Thread_Enable_dispatch();                                    
   465b8:	4eb9 0004 9138 	jsr 49138 <_Thread_Enable_dispatch>         
        return( return_value );                                       
   465be:	6000 011c      	braw 466dc <rtems_rate_monotonic_period+0x18a>
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
   465c2:	203c 0000 0700 	movel #1792,%d0                             
   465c8:	40c4           	movew %sr,%d4                               
   465ca:	8084           	orl %d4,%d0                                 
   465cc:	46c0           	movew %d0,%sr                               
      if ( the_period->state == RATE_MONOTONIC_INACTIVE ) {           
   465ce:	202a 0038      	movel %a2@(56),%d0                          
   465d2:	664a           	bnes 4661e <rtems_rate_monotonic_period+0xcc>
        _ISR_Enable( level );                                         
   465d4:	46c4           	movew %d4,%sr                               
                                                                      
        the_period->next_length = length;                             
   465d6:	2542 003c      	movel %d2,%a2@(60)                          
                                                                      
        /*                                                            
         *  Baseline statistics information for the beginning of a period.
         */                                                           
        _Rate_monotonic_Initiate_statistics( the_period );            
   465da:	2f0a           	movel %a2,%sp@-                             
   465dc:	4eb9 0004 63d6 	jsr 463d6 <_Rate_monotonic_Initiate_statistics>
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
   465e2:	7002           	moveq #2,%d0                                
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
   465e4:	223c 0004 692c 	movel #289068,%d1                           
   465ea:	2540 0038      	movel %d0,%a2@(56)                          
   465ee:	2541 002c      	movel %d1,%a2@(44)                          
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
   465f2:	42aa 0018      	clrl %a2@(24)                               
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
   465f6:	2543 0030      	movel %d3,%a2@(48)                          
  the_watchdog->user_data = user_data;                                
   465fa:	42aa 0034      	clrl %a2@(52)                               
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
   465fe:	2542 001c      	movel %d2,%a2@(28)                          
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
   46602:	486a 0010      	pea %a2@(16)                                
   46606:	4879 0005 f2d8 	pea 5f2d8 <_Watchdog_Ticks_chain>           
   4660c:	4eb9 0004 9e04 	jsr 49e04 <_Watchdog_Insert>                
          id,                                                         
          NULL                                                        
        );                                                            
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Thread_Enable_dispatch();                                    
   46612:	4eb9 0004 9138 	jsr 49138 <_Thread_Enable_dispatch>         
        return RTEMS_SUCCESSFUL;                                      
   46618:	4fef 000c      	lea %sp@(12),%sp                            
   4661c:	606c           	bras 4668a <rtems_rate_monotonic_period+0x138>
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_ACTIVE ) {             
   4661e:	7202           	moveq #2,%d1                                
   46620:	b280           	cmpl %d0,%d1                                
   46622:	666a           	bnes 4668e <rtems_rate_monotonic_period+0x13c>
        /*                                                            
         *  Update statistics from the concluding period.             
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
   46624:	2f0a           	movel %a2,%sp@-                             
   46626:	4eb9 0004 6460 	jsr 46460 <_Rate_monotonic_Update_statistics>
        /*                                                            
         *  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;         
   4662c:	7001           	moveq #1,%d0                                
        the_period->next_length = length;                             
   4662e:	2542 003c      	movel %d2,%a2@(60)                          
        /*                                                            
         *  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;         
   46632:	2540 0038      	movel %d0,%a2@(56)                          
        the_period->next_length = length;                             
                                                                      
        _ISR_Enable( level );                                         
   46636:	46c4           	movew %d4,%sr                               
                                                                      
        _Thread_Executing->Wait.id = the_period->Object.id;           
   46638:	2079 0005 f3b4 	moveal 5f3b4 <_Per_CPU_Information+0xc>,%a0 
   4663e:	216a 0008 0020 	movel %a2@(8),%a0@(32)                      
        _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
   46644:	4878 4000      	pea 4000 <D_MAX_EXP+0x3801>                 
   46648:	2f08           	movel %a0,%sp@-                             
   4664a:	4eb9 0004 9890 	jsr 49890 <_Thread_Set_state>               
                                                                      
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
   46650:	203c 0000 0700 	movel #1792,%d0                             
   46656:	40c1           	movew %sr,%d1                               
   46658:	8081           	orl %d1,%d0                                 
   4665a:	46c0           	movew %d0,%sr                               
          local_state = the_period->state;                            
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
   4665c:	7402           	moveq #2,%d2                                
        /*                                                            
         *  Did the watchdog timer expire while we were actually blocking
         *  on it?                                                    
         */                                                           
        _ISR_Disable( level );                                        
          local_state = the_period->state;                            
   4665e:	202a 0038      	movel %a2@(56),%d0                          
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
   46662:	2542 0038      	movel %d2,%a2@(56)                          
        _ISR_Enable( level );                                         
   46666:	46c1           	movew %d1,%sr                               
                                                                      
        /*                                                            
         *  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 )   
   46668:	7203           	moveq #3,%d1                                
   4666a:	4fef 000c      	lea %sp@(12),%sp                            
   4666e:	b280           	cmpl %d0,%d1                                
   46670:	6612           	bnes 46684 <rtems_rate_monotonic_period+0x132>
          _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
   46672:	4878 4000      	pea 4000 <D_MAX_EXP+0x3801>                 
   46676:	2f39 0005 f3b4 	movel 5f3b4 <_Per_CPU_Information+0xc>,%sp@-
   4667c:	4eb9 0004 8dc4 	jsr 48dc4 <_Thread_Clear_state>             
   46682:	508f           	addql #8,%sp                                
                                                                      
        _Thread_Enable_dispatch();                                    
   46684:	4eb9 0004 9138 	jsr 49138 <_Thread_Enable_dispatch>         
        return RTEMS_SUCCESSFUL;                                      
   4668a:	4282           	clrl %d2                                    
   4668c:	604e           	bras 466dc <rtems_rate_monotonic_period+0x18a>
      }                                                               
                                                                      
      if ( the_period->state == RATE_MONOTONIC_EXPIRED ) {            
   4668e:	7204           	moveq #4,%d1                                
   46690:	b280           	cmpl %d0,%d1                                
   46692:	6646           	bnes 466da <rtems_rate_monotonic_period+0x188><== NEVER TAKEN
        /*                                                            
         *  Update statistics from the concluding period              
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
   46694:	2f0a           	movel %a2,%sp@-                             
   46696:	4eb9 0004 6460 	jsr 46460 <_Rate_monotonic_Update_statistics>
                                                                      
        _ISR_Enable( level );                                         
   4669c:	46c4           	movew %d4,%sr                               
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
   4669e:	7002           	moveq #2,%d0                                
        the_period->next_length = length;                             
   466a0:	2542 003c      	movel %d2,%a2@(60)                          
         */                                                           
        _Rate_monotonic_Update_statistics( the_period );              
                                                                      
        _ISR_Enable( level );                                         
                                                                      
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
   466a4:	2540 0038      	movel %d0,%a2@(56)                          
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
   466a8:	2542 001c      	movel %d2,%a2@(28)                          
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
   466ac:	486a 0010      	pea %a2@(16)                                
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Scheduler_Release_job(the_period->owner, the_period->next_length);
        _Thread_Enable_dispatch();                                    
        return RTEMS_TIMEOUT;                                         
   466b0:	7406           	moveq #6,%d2                                
   466b2:	4879 0005 f2d8 	pea 5f2d8 <_Watchdog_Ticks_chain>           
   466b8:	4eb9 0004 9e04 	jsr 49e04 <_Watchdog_Insert>                
   466be:	2f2a 003c      	movel %a2@(60),%sp@-                        
   466c2:	2f2a 0040      	movel %a2@(64),%sp@-                        
   466c6:	2079 0005 d8f2 	moveal 5d8f2 <_Scheduler+0x34>,%a0          
   466cc:	4e90           	jsr %a0@                                    
        the_period->state = RATE_MONOTONIC_ACTIVE;                    
        the_period->next_length = length;                             
                                                                      
        _Watchdog_Insert_ticks( &the_period->Timer, length );         
        _Scheduler_Release_job(the_period->owner, the_period->next_length);
        _Thread_Enable_dispatch();                                    
   466ce:	4eb9 0004 9138 	jsr 49138 <_Thread_Enable_dispatch>         
        return RTEMS_TIMEOUT;                                         
   466d4:	4fef 0014      	lea %sp@(20),%sp                            
   466d8:	6002           	bras 466dc <rtems_rate_monotonic_period+0x18a>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   466da:	7404           	moveq #4,%d2                                
}                                                                     
   466dc:	2002           	movel %d2,%d0                               
   466de:	4cee 041c ffec 	moveml %fp@(-20),%d2-%d4/%a2                
   466e4:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

0004687c <rtems_rate_monotonic_reset_all_statistics>: /* * rtems_rate_monotonic_reset_all_statistics */ void rtems_rate_monotonic_reset_all_statistics( void ) {
   4687c:	4e56 0000      	linkw %fp,#0                                
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level++;                                 
   46880:	2039 0005 f220 	movel 5f220 <_Thread_Dispatch_disable_level>,%d0
   46886:	5280           	addql #1,%d0                                
   46888:	2f0a           	movel %a2,%sp@-                             
   4688a:	23c0 0005 f220 	movel %d0,5f220 <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   46890:	2039 0005 f220 	movel 5f220 <_Thread_Dispatch_disable_level>,%d0
   46896:	2f02           	movel %d2,%sp@-                             
                                                                      
    /*                                                                
     * 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 ;                 
   46898:	2439 0005 f136 	movel 5f136 <_Rate_monotonic_Information+0x6>,%d2
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
      (void) rtems_rate_monotonic_reset_statistics( id );             
   4689e:	45f9 0004 68c8 	lea 468c8 <rtems_rate_monotonic_reset_statistics>,%a2
                                                                      
    /*                                                                
     * 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 ;                 
   468a4:	6008           	bras 468ae <rtems_rate_monotonic_reset_all_statistics+0x32>
          id <= _Rate_monotonic_Information.maximum_id ;              
          id++ ) {                                                    
      (void) rtems_rate_monotonic_reset_statistics( id );             
   468a6:	2f02           	movel %d2,%sp@-                             
     * 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++ ) {                                                    
   468a8:	5282           	addql #1,%d2                                
      (void) rtems_rate_monotonic_reset_statistics( id );             
   468aa:	4e92           	jsr %a2@                                    
     * 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++ ) {                                                    
   468ac:	588f           	addql #4,%sp                                
                                                                      
    /*                                                                
     * 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 ;                 
   468ae:	b4b9 0005 f13a 	cmpl 5f13a <_Rate_monotonic_Information+0xa>,%d2
   468b4:	63f0           	blss 468a6 <rtems_rate_monotonic_reset_all_statistics+0x2a>
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
}                                                                     
   468b6:	242e fff8      	movel %fp@(-8),%d2                          
   468ba:	246e fffc      	moveal %fp@(-4),%a2                         
   468be:	4e5e           	unlk %fp                                    
    }                                                                 
                                                                      
  /*                                                                  
   *  Done so exit thread dispatching disabled critical section.      
   */                                                                 
  _Thread_Enable_dispatch();                                          
   468c0:	4ef9 0004 9138 	jmp 49138 <_Thread_Enable_dispatch>         
	...                                                                  
                                                                      

000504a8 <rtems_region_get_segment_size>: rtems_status_code rtems_region_get_segment_size( rtems_id id, void *segment, uintptr_t *size ) {
   504a8:	4e56 fffc      	linkw %fp,#-4                               
   504ac:	2f03           	movel %d3,%sp@-                             
   504ae:	262e 0010      	movel %fp@(16),%d3                          
   504b2:	2f02           	movel %d2,%sp@-                             
   504b4:	242e 000c      	movel %fp@(12),%d2                          
  Objects_Locations        location;                                  
  rtems_status_code        return_status = RTEMS_SUCCESSFUL;          
  register Region_Control *the_region;                                
                                                                      
  if ( !segment )                                                     
   504b8:	6768           	beqs 50522 <rtems_region_get_segment_size+0x7a>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !size )                                                        
   504ba:	4a83           	tstl %d3                                    
   504bc:	6764           	beqs 50522 <rtems_region_get_segment_size+0x7a>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  _RTEMS_Lock_allocator();                                            
   504be:	2f39 0007 5704 	movel 75704 <_RTEMS_Allocator_Mutex>,%sp@-  
   504c4:	4eb9 0005 2370 	jsr 52370 <_API_Mutex_Lock>                 
   504ca:	486e fffc      	pea %fp@(-4)                                
   504ce:	2f2e 0008      	movel %fp@(8),%sp@-                         
   504d2:	4879 0007 5574 	pea 75574 <_Region_Information>             
   504d8:	4eb9 0005 3ce0 	jsr 53ce0 <_Objects_Get_no_protection>      
                                                                      
    the_region = _Region_Get( id, &location );                        
    switch ( location ) {                                             
   504de:	222e fffc      	movel %fp@(-4),%d1                          
   504e2:	4fef 0010      	lea %sp@(16),%sp                            
   504e6:	6708           	beqs 504f0 <rtems_region_get_segment_size+0x48>
   504e8:	7001           	moveq #1,%d0                                
   504ea:	b081           	cmpl %d1,%d0                                
   504ec:	661a           	bnes 50508 <rtems_region_get_segment_size+0x60><== NEVER TAKEN
   504ee:	601c           	bras 5050c <rtems_region_get_segment_size+0x64>
                                                                      
      case OBJECTS_LOCAL:                                             
        if ( !_Heap_Size_of_alloc_area( &the_region->Memory, segment, size ) )
   504f0:	2f03           	movel %d3,%sp@-                             
   504f2:	2040           	moveal %d0,%a0                              
   504f4:	2f02           	movel %d2,%sp@-                             
   504f6:	4868 0068      	pea %a0@(104)                               
   504fa:	4eb9 0005 374c 	jsr 5374c <_Heap_Size_of_alloc_area>        
   50500:	4fef 000c      	lea %sp@(12),%sp                            
   50504:	4a00           	tstb %d0                                    
   50506:	6708           	beqs 50510 <rtems_region_get_segment_size+0x68><== NEVER TAKEN
  void      *segment,                                                 
  uintptr_t *size                                                     
)                                                                     
{                                                                     
  Objects_Locations        location;                                  
  rtems_status_code        return_status = RTEMS_SUCCESSFUL;          
   50508:	4282           	clrl %d2                                    
   5050a:	6006           	bras 50512 <rtems_region_get_segment_size+0x6a>
      case OBJECTS_REMOTE:        /* this error cannot be returned */ 
        break;                                                        
#endif                                                                
                                                                      
      case OBJECTS_ERROR:                                             
        return_status = RTEMS_INVALID_ID;                             
   5050c:	7404           	moveq #4,%d2                                
   5050e:	6002           	bras 50512 <rtems_region_get_segment_size+0x6a>
    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;                      
   50510:	7409           	moveq #9,%d2                                <== NOT EXECUTED
      case OBJECTS_ERROR:                                             
        return_status = RTEMS_INVALID_ID;                             
        break;                                                        
    }                                                                 
                                                                      
  _RTEMS_Unlock_allocator();                                          
   50512:	2f39 0007 5704 	movel 75704 <_RTEMS_Allocator_Mutex>,%sp@-  
   50518:	4eb9 0005 23d0 	jsr 523d0 <_API_Mutex_Unlock>               
  return return_status;                                               
   5051e:	588f           	addql #4,%sp                                
   50520:	6002           	bras 50524 <rtems_region_get_segment_size+0x7c>
                                                                      
  if ( !segment )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !size )                                                        
    return RTEMS_INVALID_ADDRESS;                                     
   50522:	7409           	moveq #9,%d2                                
        break;                                                        
    }                                                                 
                                                                      
  _RTEMS_Unlock_allocator();                                          
  return return_status;                                               
}                                                                     
   50524:	2002           	movel %d2,%d0                               
   50526:	242e fff4      	movel %fp@(-12),%d2                         
   5052a:	262e fff8      	movel %fp@(-8),%d3                          
   5052e:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004602c <rtems_shutdown_executive>: void rtems_shutdown_executive( uint32_t result ) { if ( _System_state_Is_up( _System_state_Get() ) ) {
   4602c:	7003           	moveq #3,%d0                                
 */                                                                   
                                                                      
void rtems_shutdown_executive(                                        
   uint32_t   result                                                  
)                                                                     
{                                                                     
   4602e:	4e56 0000      	linkw %fp,#0                                
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
   46032:	b0b9 0005 d968 	cmpl 5d968 <_System_state_Current>,%d0      
   46038:	6624           	bnes 4605e <rtems_shutdown_executive+0x32>  
    #if defined(RTEMS_SMP)                                            
      _SMP_Request_other_cores_to_shutdown();                         
    #endif                                                            
                                                                      
    _Per_CPU_Information[0].idle->Wait.return_code = result;          
   4603a:	2079 0005 d9c4 	moveal 5d9c4 <_Per_CPU_Information+0x14>,%a0
   46040:	103c 0004      	moveb #4,%d0                                
   46044:	216e 0008 0034 	movel %fp@(8),%a0@(52)                      
   *  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 );                      
   4604a:	4879 0005 d7f4 	pea 5d7f4 <_Thread_BSP_context>             
   46050:	23c0 0005 d968 	movel %d0,5d968 <_System_state_Current>     
   46056:	4eb9 0004 8ba2 	jsr 48ba2 <_CPU_Context_Restart_self>       
   4605c:	588f           	addql #4,%sp                                <== NOT EXECUTED
     ******                 AND THEN TO BOOT_CARD()               ******
     *******************************************************************
     *******************************************************************
     *******************************************************************/
  }                                                                   
  _Internal_error_Occurred(                                           
   4605e:	4878 0014      	pea 14 <OPER2>                              
   46062:	4878 0001      	pea 1 <ADD>                                 
   46066:	42a7           	clrl %sp@-                                  
   46068:	4eb9 0004 6b84 	jsr 46b84 <_Internal_error_Occurred>        
	...                                                                  
                                                                      

00050b0c <rtems_signal_send>: rtems_status_code rtems_signal_send( rtems_id id, rtems_signal_set signal_set ) {
   50b0c:	4e56 fffc      	linkw %fp,#-4                               
   50b10:	2f03           	movel %d3,%sp@-                             
   50b12:	2f02           	movel %d2,%sp@-                             
   50b14:	242e 000c      	movel %fp@(12),%d2                          
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
   50b18:	6776           	beqs 50b90 <rtems_signal_send+0x84>         
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  the_thread = _Thread_Get( id, &location );                          
   50b1a:	486e fffc      	pea %fp@(-4)                                
   50b1e:	2f2e 0008      	movel %fp@(8),%sp@-                         
   50b22:	4eb9 0005 4968 	jsr 54968 <_Thread_Get>                     
  switch ( location ) {                                               
   50b28:	508f           	addql #8,%sp                                
   50b2a:	4aae fffc      	tstl %fp@(-4)                               
   50b2e:	6664           	bnes 50b94 <rtems_signal_send+0x88>         
                                                                      
    case OBJECTS_LOCAL:                                               
      api = the_thread->API_Extensions[ THREAD_API_RTEMS ];           
   50b30:	2240           	moveal %d0,%a1                              
   50b32:	2069 00fc      	moveal %a1@(252),%a0                        
      asr = &api->Signal;                                             
                                                                      
      if ( ! _ASR_Is_null_handler( asr->handler ) ) {                 
   50b36:	4aa8 000a      	tstl %a0@(10)                               
   50b3a:	674a           	beqs 50b86 <rtems_signal_send+0x7a>         
   50b3c:	223c 0000 0700 	movel #1792,%d1                             
        if ( asr->is_enabled ) {                                      
   50b42:	4a28 0008      	tstb %a0@(8)                                
   50b46:	6726           	beqs 50b6e <rtems_signal_send+0x62>         
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
   50b48:	40c3           	movew %sr,%d3                               
   50b4a:	8283           	orl %d3,%d1                                 
   50b4c:	46c1           	movew %d1,%sr                               
    *signal_set |= signals;                                           
   50b4e:	85a8 0012      	orl %d2,%a0@(18)                            
  _ISR_Enable( _level );                                              
   50b52:	46c3           	movew %d3,%sr                               
          _ASR_Post_signals( signal_set, &asr->signals_posted );      
                                                                      
          if ( _ISR_Is_in_progress() && _Thread_Is_executing( the_thread ) )
   50b54:	4ab9 0007 57fc 	tstl 757fc <_Per_CPU_Information+0x8>       
   50b5a:	6720           	beqs 50b7c <rtems_signal_send+0x70>         
   50b5c:	b0b9 0007 5800 	cmpl 75800 <_Per_CPU_Information+0xc>,%d0   
   50b62:	6618           	bnes 50b7c <rtems_signal_send+0x70>         <== NEVER TAKEN
            _Thread_Dispatch_necessary = true;                        
   50b64:	7001           	moveq #1,%d0                                
   50b66:	13c0 0007 580c 	moveb %d0,7580c <_Per_CPU_Information+0x18> 
   50b6c:	600e           	bras 50b7c <rtems_signal_send+0x70>         
  rtems_signal_set *signal_set                                        
)                                                                     
{                                                                     
  ISR_Level              _level;                                      
                                                                      
  _ISR_Disable( _level );                                             
   50b6e:	2001           	movel %d1,%d0                               
   50b70:	40c1           	movew %sr,%d1                               
   50b72:	8081           	orl %d1,%d0                                 
   50b74:	46c0           	movew %d0,%sr                               
    *signal_set |= signals;                                           
   50b76:	85a8 0016      	orl %d2,%a0@(22)                            
  _ISR_Enable( _level );                                              
   50b7a:	46c1           	movew %d1,%sr                               
        } else {                                                      
          _ASR_Post_signals( signal_set, &asr->signals_pending );     
        }                                                             
        _Thread_Enable_dispatch();                                    
   50b7c:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
        return RTEMS_SUCCESSFUL;                                      
   50b82:	4280           	clrl %d0                                    
   50b84:	6010           	bras 50b96 <rtems_signal_send+0x8a>         
      }                                                               
      _Thread_Enable_dispatch();                                      
   50b86:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
      return RTEMS_NOT_DEFINED;                                       
   50b8c:	700b           	moveq #11,%d0                               
   50b8e:	6006           	bras 50b96 <rtems_signal_send+0x8a>         
  Objects_Locations        location;                                  
  RTEMS_API_Control       *api;                                       
  ASR_Information         *asr;                                       
                                                                      
  if ( !signal_set )                                                  
    return RTEMS_INVALID_NUMBER;                                      
   50b90:	700a           	moveq #10,%d0                               
   50b92:	6002           	bras 50b96 <rtems_signal_send+0x8a>         
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   50b94:	7004           	moveq #4,%d0                                
}                                                                     
   50b96:	242e fff4      	movel %fp@(-12),%d2                         
   50b9a:	262e fff8      	movel %fp@(-8),%d3                          
   50b9e:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0004bc34 <rtems_task_mode>: rtems_status_code rtems_task_mode( rtems_mode mode_set, rtems_mode mask, rtems_mode *previous_mode_set ) {
   4bc34:	4e56 ffe4      	linkw %fp,#-28                              
   4bc38:	48d7 1c3c      	moveml %d2-%d5/%a2-%a4,%sp@                 
   4bc3c:	262e 0008      	movel %fp@(8),%d3                           
   4bc40:	282e 000c      	movel %fp@(12),%d4                          
   4bc44:	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 )                                           
   4bc48:	4a8c           	tstl %a4                                    
   4bc4a:	6700 0104      	beqw 4bd50 <rtems_task_mode+0x11c>          
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
   4bc4e:	2679 0005 d9bc 	moveal 5d9bc <_Per_CPU_Information+0xc>,%a3 
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
   4bc54:	4a2b 0074      	tstb %a3@(116)                              
   4bc58:	57c2           	seq %d2                                     
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  executing     = _Thread_Executing;                                  
  api = executing->API_Extensions[ THREAD_API_RTEMS ];                
   4bc5a:	246b 00fc      	moveal %a3@(252),%a2                        
  asr = &api->Signal;                                                 
                                                                      
  old_mode  = (executing->is_preemptible) ? RTEMS_PREEMPT : RTEMS_NO_PREEMPT;
   4bc5e:	49c2           	extbl %d2                                   
   4bc60:	0282 0000 0100 	andil #256,%d2                              
                                                                      
  if ( executing->budget_algorithm == THREAD_CPU_BUDGET_ALGORITHM_NONE )
   4bc66:	4aab 007a      	tstl %a3@(122)                              
   4bc6a:	6704           	beqs 4bc70 <rtems_task_mode+0x3c>           
    old_mode |= RTEMS_NO_TIMESLICE;                                   
  else                                                                
    old_mode |= RTEMS_TIMESLICE;                                      
   4bc6c:	08c2 0009      	bset #9,%d2                                 
                                                                      
  old_mode |= (asr->is_enabled) ? RTEMS_ASR : RTEMS_NO_ASR;           
   4bc70:	4a2a 0008      	tstb %a2@(8)                                
   4bc74:	57c5           	seq %d5                                     
  old_mode |= _ISR_Get_level();                                       
   4bc76:	4eb9 0004 8c48 	jsr 48c48 <_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;           
   4bc7c:	49c5           	extbl %d5                                   
   4bc7e:	0285 0000 0400 	andil #1024,%d5                             
   4bc84:	8085           	orl %d5,%d0                                 
  old_mode |= _ISR_Get_level();                                       
   4bc86:	8082           	orl %d2,%d0                                 
   4bc88:	2880           	movel %d0,%a4@                              
  *previous_mode_set = old_mode;                                      
                                                                      
  /*                                                                  
   *  These are generic thread scheduling characteristics.            
   */                                                                 
  if ( mask & RTEMS_PREEMPT_MASK )                                    
   4bc8a:	0804 0008      	btst #8,%d4                                 
   4bc8e:	670c           	beqs 4bc9c <rtems_task_mode+0x68>           
    executing->is_preemptible = _Modes_Is_preempt(mode_set) ? true : false;
   4bc90:	0803 0008      	btst #8,%d3                                 
   4bc94:	57c0           	seq %d0                                     
   4bc96:	4480           	negl %d0                                    
   4bc98:	1740 0074      	moveb %d0,%a3@(116)                         
                                                                      
  if ( mask & RTEMS_TIMESLICE_MASK ) {                                
   4bc9c:	0804 0009      	btst #9,%d4                                 
   4bca0:	671c           	beqs 4bcbe <rtems_task_mode+0x8a>           
    if ( _Modes_Is_timeslice(mode_set) ) {                            
   4bca2:	0803 0009      	btst #9,%d3                                 
   4bca6:	6712           	beqs 4bcba <rtems_task_mode+0x86>           
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_RESET_TIMESLICE;
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
   4bca8:	41f9 0005 d7e0 	lea 5d7e0 <_Thread_Ticks_per_timeslice>,%a0 
  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;
   4bcae:	7001           	moveq #1,%d0                                
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
   4bcb0:	2750 0076      	movel %a0@,%a3@(118)                        
  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;
   4bcb4:	2740 007a      	movel %d0,%a3@(122)                         
   4bcb8:	6004           	bras 4bcbe <rtems_task_mode+0x8a>           
      executing->cpu_time_budget  = _Thread_Ticks_per_timeslice;      
    } else                                                            
      executing->budget_algorithm = THREAD_CPU_BUDGET_ALGORITHM_NONE; 
   4bcba:	42ab 007a      	clrl %a3@(122)                              
  }                                                                   
                                                                      
  /*                                                                  
   *  Set the new interrupt level                                     
   */                                                                 
  if ( mask & RTEMS_INTERRUPT_MASK )                                  
   4bcbe:	7007           	moveq #7,%d0                                
   4bcc0:	c084           	andl %d4,%d0                                
   4bcc2:	6712           	beqs 4bcd6 <rtems_task_mode+0xa2>           
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
   4bcc4:	40c0           	movew %sr,%d0                               
 */                                                                   
RTEMS_INLINE_ROUTINE ISR_Level _Modes_Get_interrupt_level (           
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  return ( mode_set & RTEMS_INTERRUPT_MASK );                         
   4bcc6:	7207           	moveq #7,%d1                                
   4bcc8:	c283           	andl %d3,%d1                                
 */                                                                   
RTEMS_INLINE_ROUTINE void _Modes_Set_interrupt_level (                
  Modes_Control mode_set                                              
)                                                                     
{                                                                     
  _ISR_Set_level( _Modes_Get_interrupt_level( mode_set ) );           
   4bcca:	0280 0000 f8ff 	andil #63743,%d0                            
   4bcd0:	e189           	lsll #8,%d1                                 
   4bcd2:	8081           	orl %d1,%d0                                 
   4bcd4:	46c0           	movew %d0,%sr                               
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
   4bcd6:	0804 000a      	btst #10,%d4                                
   4bcda:	6740           	beqs 4bd1c <rtems_task_mode+0xe8>           
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
   4bcdc:	4281           	clrl %d1                                    
   4bcde:	122a 0008      	moveb %a2@(8),%d1                           
   4bce2:	4282           	clrl %d2                                    
 *  Output:                                                           
 *    *previous_mode_set - previous mode set                          
 *     always return RTEMS_SUCCESSFUL;                                
 */                                                                   
                                                                      
rtems_status_code rtems_task_mode(                                    
   4bce4:	0803 000a      	btst #10,%d3                                
   4bce8:	57c0           	seq %d0                                     
   4bcea:	4480           	negl %d0                                    
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
                                                                      
  if ( mask & RTEMS_ASR_MASK ) {                                      
    is_asr_enabled = _Modes_Is_asr_disabled( mode_set ) ? false : true;
    if ( is_asr_enabled != asr->is_enabled ) {                        
   4bcec:	1400           	moveb %d0,%d2                               
   4bcee:	b282           	cmpl %d2,%d1                                
   4bcf0:	672a           	beqs 4bd1c <rtems_task_mode+0xe8>           
      asr->is_enabled = is_asr_enabled;                               
   4bcf2:	1540 0008      	moveb %d0,%a2@(8)                           
)                                                                     
{                                                                     
  rtems_signal_set _signals;                                          
  ISR_Level        _level;                                            
                                                                      
  _ISR_Disable( _level );                                             
   4bcf6:	203c 0000 0700 	movel #1792,%d0                             
   4bcfc:	40c1           	movew %sr,%d1                               
   4bcfe:	8081           	orl %d1,%d0                                 
   4bd00:	46c0           	movew %d0,%sr                               
    _signals                     = information->signals_pending;      
   4bd02:	202a 0016      	movel %a2@(22),%d0                          
    information->signals_pending = information->signals_posted;       
   4bd06:	256a 0012 0016 	movel %a2@(18),%a2@(22)                     
    information->signals_posted  = _signals;                          
   4bd0c:	2540 0012      	movel %d0,%a2@(18)                          
  _ISR_Enable( _level );                                              
   4bd10:	46c1           	movew %d1,%sr                               
                                                                      
  /*                                                                  
   *  This is specific to the RTEMS API                               
   */                                                                 
  is_asr_enabled = false;                                             
  needs_asr_dispatching = false;                                      
   4bd12:	4aaa 0012      	tstl %a2@(18)                               
   4bd16:	56c0           	sne %d0                                     
   4bd18:	4480           	negl %d0                                    
   4bd1a:	6002           	bras 4bd1e <rtems_task_mode+0xea>           
   4bd1c:	4200           	clrb %d0                                    
        needs_asr_dispatching = true;                                 
      }                                                               
    }                                                                 
  }                                                                   
                                                                      
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
   4bd1e:	7203           	moveq #3,%d1                                
   4bd20:	b2b9 0005 d968 	cmpl 5d968 <_System_state_Current>,%d1      
   4bd26:	662c           	bnes 4bd54 <rtems_task_mode+0x120>          
  bool are_signals_pending                                            
)                                                                     
{                                                                     
  Thread_Control     *executing;                                      
                                                                      
  executing = _Thread_Executing;                                      
   4bd28:	2079 0005 d9bc 	moveal 5d9bc <_Per_CPU_Information+0xc>,%a0 
                                                                      
  if ( are_signals_pending ||                                         
   4bd2e:	4a00           	tstb %d0                                    
   4bd30:	660e           	bnes 4bd40 <rtems_task_mode+0x10c>          
   4bd32:	b1f9 0005 d9c0 	cmpal 5d9c0 <_Per_CPU_Information+0x10>,%a0 
   4bd38:	671a           	beqs 4bd54 <rtems_task_mode+0x120>          
       (!_Thread_Is_heir( executing ) && executing->is_preemptible) ) {
   4bd3a:	4a28 0074      	tstb %a0@(116)                              
   4bd3e:	6714           	beqs 4bd54 <rtems_task_mode+0x120>          <== NEVER TAKEN
    _Thread_Dispatch_necessary = true;                                
   4bd40:	7001           	moveq #1,%d0                                
   4bd42:	13c0 0005 d9c8 	moveb %d0,5d9c8 <_Per_CPU_Information+0x18> 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
   4bd48:	4eb9 0004 7b70 	jsr 47b70 <_Thread_Dispatch>                
   4bd4e:	6004           	bras 4bd54 <rtems_task_mode+0x120>          
  bool                is_asr_enabled = false;                         
  bool                needs_asr_dispatching = false;                  
  rtems_mode          old_mode;                                       
                                                                      
  if ( !previous_mode_set )                                           
    return RTEMS_INVALID_ADDRESS;                                     
   4bd50:	7009           	moveq #9,%d0                                
   4bd52:	6002           	bras 4bd56 <rtems_task_mode+0x122>          
  if ( _System_state_Is_up( _System_state_Get() ) ) {                 
     if (_Thread_Evaluate_is_dispatch_needed( needs_asr_dispatching ) )
      _Thread_Dispatch();                                             
  }                                                                   
                                                                      
  return RTEMS_SUCCESSFUL;                                            
   4bd54:	4280           	clrl %d0                                    
}                                                                     
   4bd56:	4cee 1c3c ffe4 	moveml %fp@(-28),%d2-%d5/%a2-%a4            
   4bd5c:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00049500 <rtems_task_set_priority>: rtems_status_code rtems_task_set_priority( rtems_id id, rtems_task_priority new_priority, rtems_task_priority *old_priority ) {
   49500:	4e56 fffc      	linkw %fp,#-4                               
   49504:	2f0a           	movel %a2,%sp@-                             
   49506:	246e 0010      	moveal %fp@(16),%a2                         
   4950a:	2f02           	movel %d2,%sp@-                             
   4950c:	242e 000c      	movel %fp@(12),%d2                          
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
   49510:	670c           	beqs 4951e <rtems_task_set_priority+0x1e>   
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 ) );             
   49512:	4280           	clrl %d0                                    
   49514:	1039 0005 f56a 	moveb 5f56a <rtems_maximum_priority>,%d0    
   4951a:	b082           	cmpl %d2,%d0                                
   4951c:	654e           	bcss 4956c <rtems_task_set_priority+0x6c>   
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
                                                                      
  if ( !old_priority )                                                
   4951e:	4a8a           	tstl %a2                                    
   49520:	674e           	beqs 49570 <rtems_task_set_priority+0x70>   
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
   49522:	486e fffc      	pea %fp@(-4)                                
   49526:	2f2e 0008      	movel %fp@(8),%sp@-                         
   4952a:	4eb9 0004 b5d4 	jsr 4b5d4 <_Thread_Get>                     
  switch ( location ) {                                               
   49530:	508f           	addql #8,%sp                                
    return RTEMS_INVALID_PRIORITY;                                    
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  the_thread = _Thread_Get( id, &location );                          
   49532:	2040           	moveal %d0,%a0                              
  switch ( location ) {                                               
   49534:	4aae fffc      	tstl %fp@(-4)                               
   49538:	663a           	bnes 49574 <rtems_task_set_priority+0x74>   
                                                                      
    case OBJECTS_LOCAL:                                               
      /* XXX need helper to "convert" from core priority */           
      *old_priority = the_thread->current_priority;                   
   4953a:	24a8 0014      	movel %a0@(20),%a2@                         
      if ( new_priority != RTEMS_CURRENT_PRIORITY ) {                 
   4953e:	4a82           	tstl %d2                                    
   49540:	6720           	beqs 49562 <rtems_task_set_priority+0x62>   
        the_thread->real_priority = new_priority;                     
   49542:	2142 0018      	movel %d2,%a0@(24)                          
        if ( the_thread->resource_count == 0 ||                       
   49546:	4aa8 001c      	tstl %a0@(28)                               
   4954a:	6706           	beqs 49552 <rtems_task_set_priority+0x52>   
   4954c:	b4a8 0014      	cmpl %a0@(20),%d2                           
   49550:	6410           	bccs 49562 <rtems_task_set_priority+0x62>   <== ALWAYS TAKEN
             the_thread->current_priority > new_priority )            
          _Thread_Change_priority( the_thread, new_priority, false ); 
   49552:	42a7           	clrl %sp@-                                  
   49554:	2f02           	movel %d2,%sp@-                             
   49556:	2f08           	movel %a0,%sp@-                             
   49558:	4eb9 0004 b15c 	jsr 4b15c <_Thread_Change_priority>         
   4955e:	4fef 000c      	lea %sp@(12),%sp                            
      }                                                               
      _Thread_Enable_dispatch();                                      
   49562:	4eb9 0004 b5ac 	jsr 4b5ac <_Thread_Enable_dispatch>         
      return RTEMS_SUCCESSFUL;                                        
   49568:	4280           	clrl %d0                                    
   4956a:	600a           	bras 49576 <rtems_task_set_priority+0x76>   
  register Thread_Control *the_thread;                                
  Objects_Locations        location;                                  
                                                                      
  if ( new_priority != RTEMS_CURRENT_PRIORITY &&                      
       !_RTEMS_tasks_Priority_is_valid( new_priority ) )              
    return RTEMS_INVALID_PRIORITY;                                    
   4956c:	7013           	moveq #19,%d0                               
   4956e:	6006           	bras 49576 <rtems_task_set_priority+0x76>   
                                                                      
  if ( !old_priority )                                                
    return RTEMS_INVALID_ADDRESS;                                     
   49570:	7009           	moveq #9,%d0                                
   49572:	6002           	bras 49576 <rtems_task_set_priority+0x76>   
                                                                      
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   49574:	7004           	moveq #4,%d0                                
}                                                                     
   49576:	242e fff4      	movel %fp@(-12),%d2                         
   4957a:	246e fff8      	moveal %fp@(-8),%a2                         
   4957e:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

00051390 <rtems_timer_cancel>: */ rtems_status_code rtems_timer_cancel( rtems_id id ) {
   51390:	4e56 fffc      	linkw %fp,#-4                               
RTEMS_INLINE_ROUTINE Timer_Control *_Timer_Get (                      
  Objects_Id         id,                                              
  Objects_Locations *location                                         
)                                                                     
{                                                                     
  return (Timer_Control *)                                            
   51394:	486e fffc      	pea %fp@(-4)                                
   51398:	2f2e 0008      	movel %fp@(8),%sp@-                         
   5139c:	4879 0007 5878 	pea 75878 <_Timer_Information>              
   513a2:	4eb9 0005 3d18 	jsr 53d18 <_Objects_Get>                    
  Timer_Control   *the_timer;                                         
  Objects_Locations       location;                                   
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
   513a8:	4fef 000c      	lea %sp@(12),%sp                            
   513ac:	4aae fffc      	tstl %fp@(-4)                               
   513b0:	6620           	bnes 513d2 <rtems_timer_cancel+0x42>        
                                                                      
    case OBJECTS_LOCAL:                                               
      if ( !_Timer_Is_dormant_class( the_timer->the_class ) )         
   513b2:	7204           	moveq #4,%d1                                
   513b4:	2040           	moveal %d0,%a0                              
   513b6:	b2a8 0038      	cmpl %a0@(56),%d1                           
   513ba:	670c           	beqs 513c8 <rtems_timer_cancel+0x38>        <== NEVER TAKEN
        (void) _Watchdog_Remove( &the_timer->Ticker );                
   513bc:	4868 0010      	pea %a0@(16)                                
   513c0:	4eb9 0005 5870 	jsr 55870 <_Watchdog_Remove>                
   513c6:	588f           	addql #4,%sp                                
      _Thread_Enable_dispatch();                                      
   513c8:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
      return RTEMS_SUCCESSFUL;                                        
   513ce:	4280           	clrl %d0                                    
   513d0:	6002           	bras 513d4 <rtems_timer_cancel+0x44>        
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   513d2:	7004           	moveq #4,%d0                                
}                                                                     
   513d4:	4e5e           	unlk %fp                                    <== NOT EXECUTED
                                                                      

00045ee4 <rtems_timer_create>: rtems_status_code rtems_timer_create( rtems_name name, rtems_id *id ) {
   45ee4:	4e56 0000      	linkw %fp,#0                                
   45ee8:	2f0a           	movel %a2,%sp@-                             
   45eea:	246e 000c      	moveal %fp@(12),%a2                         
   45eee:	2f02           	movel %d2,%sp@-                             
   45ef0:	242e 0008      	movel %fp@(8),%d2                           
  Timer_Control *the_timer;                                           
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
   45ef4:	676e           	beqs 45f64 <rtems_timer_create+0x80>        <== NEVER TAKEN
    return RTEMS_INVALID_NAME;                                        
                                                                      
  if ( !id )                                                          
   45ef6:	4a8a           	tstl %a2                                    
   45ef8:	676e           	beqs 45f68 <rtems_timer_create+0x84>        <== NEVER TAKEN
   *                                                                  
   * This rountine increments the thread dispatch level               
   */                                                                 
  RTEMS_INLINE_ROUTINE uint32_t _Thread_Dispatch_increment_disable_level(void)
  {                                                                   
    _Thread_Dispatch_disable_level++;                                 
   45efa:	2039 0005 d89a 	movel 5d89a <_Thread_Dispatch_disable_level>,%d0
   45f00:	5280           	addql #1,%d0                                
   45f02:	23c0 0005 d89a 	movel %d0,5d89a <_Thread_Dispatch_disable_level>
    return _Thread_Dispatch_disable_level;                            
   45f08:	2039 0005 d89a 	movel 5d89a <_Thread_Dispatch_disable_level>,%d0
 *  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 );  
   45f0e:	4879 0005 da6c 	pea 5da6c <_Timer_Information>              
   45f14:	4eb9 0004 6d2c 	jsr 46d2c <_Objects_Allocate>               
                                                                      
  _Thread_Disable_dispatch();         /* to prevent deletion */       
                                                                      
  the_timer = _Timer_Allocate();                                      
                                                                      
  if ( !the_timer ) {                                                 
   45f1a:	588f           	addql #4,%sp                                
   45f1c:	2040           	moveal %d0,%a0                              
   45f1e:	4a80           	tstl %d0                                    
   45f20:	660a           	bnes 45f2c <rtems_timer_create+0x48>        
    _Thread_Enable_dispatch();                                        
   45f22:	4eb9 0004 7d40 	jsr 47d40 <_Thread_Enable_dispatch>         
    return RTEMS_TOO_MANY;                                            
   45f28:	7005           	moveq #5,%d0                                
   45f2a:	603e           	bras 45f6a <rtems_timer_create+0x86>        
  }                                                                   
                                                                      
  the_timer->the_class = TIMER_DORMANT;                               
   45f2c:	7004           	moveq #4,%d0                                
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
   45f2e:	4281           	clrl %d1                                    
   45f30:	2140 0038      	movel %d0,%a0@(56)                          
  Objects_Name         name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
   45f34:	2028 0008      	movel %a0@(8),%d0                           
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
   45f38:	2279 0005 da84 	moveal 5da84 <_Timer_Information+0x18>,%a1  
   45f3e:	3200           	movew %d0,%d1                               
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
   45f40:	42a8 0018      	clrl %a0@(24)                               
  the_watchdog->routine   = routine;                                  
   45f44:	42a8 002c      	clrl %a0@(44)                               
  the_watchdog->id        = id;                                       
   45f48:	42a8 0030      	clrl %a0@(48)                               
  the_watchdog->user_data = user_data;                                
   45f4c:	42a8 0034      	clrl %a0@(52)                               
   45f50:	2388 1c00      	movel %a0,%a1@(00000000,%d1:l:4)            
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
   45f54:	2142 000c      	movel %d2,%a0@(12)                          
    &_Timer_Information,                                              
    &the_timer->Object,                                               
    (Objects_Name) name                                               
  );                                                                  
                                                                      
  *id = the_timer->Object.id;                                         
   45f58:	2480           	movel %d0,%a2@                              
  _Thread_Enable_dispatch();                                          
   45f5a:	4eb9 0004 7d40 	jsr 47d40 <_Thread_Enable_dispatch>         
  return RTEMS_SUCCESSFUL;                                            
   45f60:	4280           	clrl %d0                                    
   45f62:	6006           	bras 45f6a <rtems_timer_create+0x86>        
)                                                                     
{                                                                     
  Timer_Control *the_timer;                                           
                                                                      
  if ( !rtems_is_name_valid( name ) )                                 
    return RTEMS_INVALID_NAME;                                        
   45f64:	7003           	moveq #3,%d0                                
   45f66:	6002           	bras 45f6a <rtems_timer_create+0x86>        
                                                                      
  if ( !id )                                                          
    return RTEMS_INVALID_ADDRESS;                                     
   45f68:	7009           	moveq #9,%d0                                
  );                                                                  
                                                                      
  *id = the_timer->Object.id;                                         
  _Thread_Enable_dispatch();                                          
  return RTEMS_SUCCESSFUL;                                            
}                                                                     
   45f6a:	242e fff8      	movel %fp@(-8),%d2                          
   45f6e:	246e fffc      	moveal %fp@(-4),%a2                         
   45f72:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0005176c <rtems_timer_server_fire_after>: rtems_id id, rtems_interval ticks, rtems_timer_service_routine_entry routine, void *user_data ) {
   5176c:	4e56 ffe8      	linkw %fp,#-24                              
   51770:	48d7 0c1c      	moveml %d2-%d4/%a2-%a3,%sp@                 
   51774:	262e 0008      	movel %fp@(8),%d3                           
   51778:	242e 000c      	movel %fp@(12),%d2                          
   5177c:	282e 0010      	movel %fp@(16),%d4                          
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  ISR_Level             level;                                        
  Timer_server_Control *timer_server = _Timer_server;                 
   51780:	2679 0007 58b0 	moveal 758b0 <_Timer_server>,%a3            
                                                                      
  if ( !timer_server )                                                
   51786:	4a8b           	tstl %a3                                    
   51788:	6700 0088      	beqw 51812 <rtems_timer_server_fire_after+0xa6>
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !routine )                                                     
   5178c:	4a84           	tstl %d4                                    
   5178e:	6700 0086      	beqw 51816 <rtems_timer_server_fire_after+0xaa>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( ticks == 0 )                                                   
   51792:	4a82           	tstl %d2                                    
   51794:	6700 0084      	beqw 5181a <rtems_timer_server_fire_after+0xae>
   51798:	486e fffc      	pea %fp@(-4)                                
   5179c:	2f03           	movel %d3,%sp@-                             
   5179e:	4879 0007 5878 	pea 75878 <_Timer_Information>              
   517a4:	4eb9 0005 3d18 	jsr 53d18 <_Objects_Get>                    
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
   517aa:	4fef 000c      	lea %sp@(12),%sp                            
   517ae:	2440           	moveal %d0,%a2                              
   517b0:	4aae fffc      	tstl %fp@(-4)                               
   517b4:	6668           	bnes 5181e <rtems_timer_server_fire_after+0xb2><== NEVER TAKEN
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
   517b6:	486a 0010      	pea %a2@(16)                                
   517ba:	4eb9 0005 5870 	jsr 55870 <_Watchdog_Remove>                
                                                                      
      _ISR_Disable( level );                                          
   517c0:	203c 0000 0700 	movel #1792,%d0                             
   517c6:	40c1           	movew %sr,%d1                               
   517c8:	8081           	orl %d1,%d0                                 
   517ca:	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_timer->Ticker.state != WATCHDOG_INACTIVE ) {         
   517cc:	588f           	addql #4,%sp                                
   517ce:	4aaa 0018      	tstl %a2@(24)                               
   517d2:	670a           	beqs 517de <rtems_timer_server_fire_after+0x72>
          _ISR_Enable( level );                                       
   517d4:	46c1           	movew %d1,%sr                               
          _Thread_Enable_dispatch();                                  
   517d6:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
   517dc:	6030           	bras 5180e <rtems_timer_server_fire_after+0xa2>
        /*                                                            
         *  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;                
   517de:	7001           	moveq #1,%d0                                
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
   517e0:	256e 0014 0034 	movel %fp@(20),%a2@(52)                     
   517e6:	2540 0038      	movel %d0,%a2@(56)                          
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
   517ea:	42aa 0018      	clrl %a2@(24)                               
  the_watchdog->routine   = routine;                                  
   517ee:	2544 002c      	movel %d4,%a2@(44)                          
  the_watchdog->id        = id;                                       
   517f2:	2543 0030      	movel %d3,%a2@(48)                          
        _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
        the_timer->Ticker.initial = ticks;                            
   517f6:	2542 001c      	movel %d2,%a2@(28)                          
      _ISR_Enable( level );                                           
   517fa:	46c1           	movew %d1,%sr                               
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
   517fc:	2f0a           	movel %a2,%sp@-                             
   517fe:	2f0b           	movel %a3,%sp@-                             
   51800:	206b 0004      	moveal %a3@(4),%a0                          
   51804:	4e90           	jsr %a0@                                    
                                                                      
      _Thread_Enable_dispatch();                                      
   51806:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
      return RTEMS_SUCCESSFUL;                                        
   5180c:	508f           	addql #8,%sp                                
   5180e:	4280           	clrl %d0                                    
   51810:	600e           	bras 51820 <rtems_timer_server_fire_after+0xb4>
  Objects_Locations     location;                                     
  ISR_Level             level;                                        
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
   51812:	700e           	moveq #14,%d0                               
   51814:	600a           	bras 51820 <rtems_timer_server_fire_after+0xb4>
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
   51816:	7009           	moveq #9,%d0                                
   51818:	6006           	bras 51820 <rtems_timer_server_fire_after+0xb4>
                                                                      
  if ( ticks == 0 )                                                   
    return RTEMS_INVALID_NUMBER;                                      
   5181a:	700a           	moveq #10,%d0                               
   5181c:	6002           	bras 51820 <rtems_timer_server_fire_after+0xb4>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   5181e:	7004           	moveq #4,%d0                                
}                                                                     
   51820:	4cee 0c1c ffe8 	moveml %fp@(-24),%d2-%d4/%a2-%a3            
   51826:	4e5e           	unlk %fp                                    
	...                                                                  
                                                                      

0005182c <rtems_timer_server_fire_when>: rtems_id id, rtems_time_of_day *wall_time, rtems_timer_service_routine_entry routine, void *user_data ) {
   5182c:	4e56 ffe8      	linkw %fp,#-24                              
   51830:	48d7 0c1c      	moveml %d2-%d4/%a2-%a3,%sp@                 
   51834:	262e 0008      	movel %fp@(8),%d3                           
   51838:	242e 000c      	movel %fp@(12),%d2                          
   5183c:	282e 0010      	movel %fp@(16),%d4                          
  Timer_Control        *the_timer;                                    
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
   51840:	2679 0007 58b0 	moveal 758b0 <_Timer_server>,%a3            
                                                                      
  if ( !timer_server )                                                
   51846:	4a8b           	tstl %a3                                    
   51848:	6700 0098      	beqw 518e2 <rtems_timer_server_fire_when+0xb6>
    return RTEMS_INCORRECT_STATE;                                     
                                                                      
  if ( !_TOD_Is_set )                                                 
   5184c:	4a39 0007 5674 	tstb 75674 <_TOD_Is_set>                    
   51852:	6700 0092      	beqw 518e6 <rtems_timer_server_fire_when+0xba>
    return RTEMS_NOT_DEFINED;                                         
                                                                      
  if ( !routine )                                                     
   51856:	4a84           	tstl %d4                                    
   51858:	6700 0090      	beqw 518ea <rtems_timer_server_fire_when+0xbe>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
   5185c:	2f02           	movel %d2,%sp@-                             
   5185e:	4eb9 0004 ec6c 	jsr 4ec6c <_TOD_Validate>                   
   51864:	588f           	addql #4,%sp                                
   51866:	4a00           	tstb %d0                                    
   51868:	6700 0084      	beqw 518ee <rtems_timer_server_fire_when+0xc2>
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
   5186c:	2f02           	movel %d2,%sp@-                             
   5186e:	4eb9 0004 ebd4 	jsr 4ebd4 <_TOD_To_seconds>                 
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
   51874:	588f           	addql #4,%sp                                
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
   51876:	2400           	movel %d0,%d2                               
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
   51878:	b0b9 0007 56ee 	cmpl 756ee <_TOD_Now>,%d0                   
   5187e:	636e           	blss 518ee <rtems_timer_server_fire_when+0xc2>
   51880:	486e fffc      	pea %fp@(-4)                                
   51884:	2f03           	movel %d3,%sp@-                             
   51886:	4879 0007 5878 	pea 75878 <_Timer_Information>              
   5188c:	4eb9 0005 3d18 	jsr 53d18 <_Objects_Get>                    
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  the_timer = _Timer_Get( id, &location );                            
  switch ( location ) {                                               
   51892:	4fef 000c      	lea %sp@(12),%sp                            
   51896:	2440           	moveal %d0,%a2                              
   51898:	4aae fffc      	tstl %fp@(-4)                               
   5189c:	6654           	bnes 518f2 <rtems_timer_server_fire_when+0xc6>
                                                                      
    case OBJECTS_LOCAL:                                               
      (void) _Watchdog_Remove( &the_timer->Ticker );                  
   5189e:	486a 0010      	pea %a2@(16)                                
   518a2:	4eb9 0005 5870 	jsr 55870 <_Watchdog_Remove>                
  the_watchdog->user_data = user_data;                                
   518a8:	256e 0014 0034 	movel %fp@(20),%a2@(52)                     
      the_timer->the_class = TIMER_TIME_OF_DAY_ON_TASK;               
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
   518ae:	94b9 0007 56ee 	subl 756ee <_TOD_Now>,%d2                   
  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;               
   518b4:	7003           	moveq #3,%d0                                
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
   518b6:	42aa 0018      	clrl %a2@(24)                               
   518ba:	2540 0038      	movel %d0,%a2@(56)                          
  the_watchdog->routine   = routine;                                  
   518be:	2544 002c      	movel %d4,%a2@(44)                          
  the_watchdog->id        = id;                                       
   518c2:	2543 0030      	movel %d3,%a2@(48)                          
      _Watchdog_Initialize( &the_timer->Ticker, routine, id, user_data );
      the_timer->Ticker.initial = seconds - _TOD_Seconds_since_epoch();
   518c6:	2542 001c      	movel %d2,%a2@(28)                          
                                                                      
      (*timer_server->schedule_operation)( timer_server, the_timer ); 
   518ca:	2f0a           	movel %a2,%sp@-                             
   518cc:	2f0b           	movel %a3,%sp@-                             
   518ce:	206b 0004      	moveal %a3@(4),%a0                          
   518d2:	4e90           	jsr %a0@                                    
                                                                      
      _Thread_Enable_dispatch();                                      
   518d4:	4eb9 0005 4940 	jsr 54940 <_Thread_Enable_dispatch>         
      return RTEMS_SUCCESSFUL;                                        
   518da:	4fef 000c      	lea %sp@(12),%sp                            
   518de:	4280           	clrl %d0                                    
   518e0:	6012           	bras 518f4 <rtems_timer_server_fire_when+0xc8>
  Objects_Locations     location;                                     
  rtems_interval        seconds;                                      
  Timer_server_Control *timer_server = _Timer_server;                 
                                                                      
  if ( !timer_server )                                                
    return RTEMS_INCORRECT_STATE;                                     
   518e2:	700e           	moveq #14,%d0                               
   518e4:	600e           	bras 518f4 <rtems_timer_server_fire_when+0xc8>
                                                                      
  if ( !_TOD_Is_set )                                                 
    return RTEMS_NOT_DEFINED;                                         
   518e6:	700b           	moveq #11,%d0                               <== NOT EXECUTED
   518e8:	600a           	bras 518f4 <rtems_timer_server_fire_when+0xc8><== NOT EXECUTED
                                                                      
  if ( !routine )                                                     
    return RTEMS_INVALID_ADDRESS;                                     
   518ea:	7009           	moveq #9,%d0                                
   518ec:	6006           	bras 518f4 <rtems_timer_server_fire_when+0xc8>
  if ( !_TOD_Validate( wall_time ) )                                  
    return RTEMS_INVALID_CLOCK;                                       
                                                                      
  seconds = _TOD_To_seconds( wall_time );                             
  if ( seconds <= _TOD_Seconds_since_epoch() )                        
    return RTEMS_INVALID_CLOCK;                                       
   518ee:	7014           	moveq #20,%d0                               
   518f0:	6002           	bras 518f4 <rtems_timer_server_fire_when+0xc8>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
   518f2:	7004           	moveq #4,%d0                                
}                                                                     
   518f4:	4cee 0c1c ffe8 	moveml %fp@(-24),%d2-%d4/%a2-%a3            
   518fa:	4e5e           	unlk %fp                                    
	...