RTEMS 4.11
Annotated Report
Sat Jul 17 01:55:23 2010

a0014c6c <_CORE_message_queue_Broadcast>:                             
{                                                                     
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
a0014c6c:	e590304c 	ldr	r3, [r0, #76]	; 0x4c                          
    Objects_Id                                 id __attribute__((unused)),
    CORE_message_queue_API_mp_support_callout  api_message_queue_mp_support __attribute__((unused)),
  #endif                                                              
  uint32_t                                  *count                    
)                                                                     
{                                                                     
a0014c70:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
a0014c74:	e1520003 	cmp	r2, r3                                        
    Objects_Id                                 id __attribute__((unused)),
    CORE_message_queue_API_mp_support_callout  api_message_queue_mp_support __attribute__((unused)),
  #endif                                                              
  uint32_t                                  *count                    
)                                                                     
{                                                                     
a0014c78:	e1a06000 	mov	r6, r0                                        
a0014c7c:	e1a0a001 	mov	sl, r1                                        
a0014c80:	e1a07002 	mov	r7, r2                                        
a0014c84:	e59d8020 	ldr	r8, [sp, #32]                                 
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
a0014c88:	8a000013 	bhi	a0014cdc <_CORE_message_queue_Broadcast+0x70> 
   *  NOTE: This check is critical because threads can block on       
   *        send and receive and this ensures that we are broadcasting
   *        the message to threads waiting to receive -- not to send. 
   */                                                                 
                                                                      
  if ( the_message_queue->number_of_pending_messages != 0 ) {         
a0014c8c:	e5905048 	ldr	r5, [r0, #72]	; 0x48                          
a0014c90:	e3550000 	cmp	r5, #0                                        
a0014c94:	0a000009 	beq	a0014cc0 <_CORE_message_queue_Broadcast+0x54> 
    *count = 0;                                                       
a0014c98:	e3a00000 	mov	r0, #0                                        
a0014c9c:	e5880000 	str	r0, [r8]                                      
    return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;                      
a0014ca0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  const void *source,                                                 
  void       *destination,                                            
  size_t      size                                                    
)                                                                     
{                                                                     
  memcpy(destination, source, size);                                  
a0014ca4:	e594002c 	ldr	r0, [r4, #44]	; 0x2c                          
a0014ca8:	e1a0100a 	mov	r1, sl                                        
a0014cac:	e1a02007 	mov	r2, r7                                        
a0014cb0:	eb00225c 	bl	a001d628 <memcpy>                              
      buffer,                                                         
      waitp->return_argument_second.mutable_object,                   
      size                                                            
    );                                                                
                                                                      
    *(size_t *) the_thread->Wait.return_argument = size;              
a0014cb4:	e5943028 	ldr	r3, [r4, #40]	; 0x28                          
   */                                                                 
  number_broadcasted = 0;                                             
  while ((the_thread =                                                
          _Thread_queue_Dequeue(&the_message_queue->Wait_queue))) {   
    waitp = &the_thread->Wait;                                        
    number_broadcasted += 1;                                          
a0014cb8:	e2855001 	add	r5, r5, #1                                    
      buffer,                                                         
      waitp->return_argument_second.mutable_object,                   
      size                                                            
    );                                                                
                                                                      
    *(size_t *) the_thread->Wait.return_argument = size;              
a0014cbc:	e5837000 	str	r7, [r3]                                      
  /*                                                                  
   *  There must be no pending messages if there is a thread waiting to
   *  receive a message.                                              
   */                                                                 
  number_broadcasted = 0;                                             
  while ((the_thread =                                                
a0014cc0:	e1a00006 	mov	r0, r6                                        
a0014cc4:	eb0009fa 	bl	a00174b4 <_Thread_queue_Dequeue>               
a0014cc8:	e2504000 	subs	r4, r0, #0                                   
a0014ccc:	1afffff4 	bne	a0014ca4 <_CORE_message_queue_Broadcast+0x38> 
      if ( !_Objects_Is_local_id( the_thread->Object.id ) )           
        (*api_message_queue_mp_support) ( the_thread, id );           
    #endif                                                            
                                                                      
  }                                                                   
  *count = number_broadcasted;                                        
a0014cd0:	e5885000 	str	r5, [r8]                                      
  return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;                        
a0014cd4:	e1a00004 	mov	r0, r4                                        
a0014cd8:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  Thread_Control          *the_thread;                                
  uint32_t                 number_broadcasted;                        
  Thread_Wait_information *waitp;                                     
                                                                      
  if ( size > the_message_queue->maximum_message_size ) {             
    return CORE_MESSAGE_QUEUE_STATUS_INVALID_SIZE;                    
a0014cdc:	e3a00001 	mov	r0, #1                                        <== NOT EXECUTED
    #endif                                                            
                                                                      
  }                                                                   
  *count = number_broadcasted;                                        
  return CORE_MESSAGE_QUEUE_STATUS_SUCCESSFUL;                        
}                                                                     
a0014ce0:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  <== NOT EXECUTED
                                                                      

a000dcb8 <_CORE_message_queue_Initialize>: CORE_message_queue_Control *the_message_queue, CORE_message_queue_Attributes *the_message_queue_attributes, uint32_t maximum_pending_messages, size_t maximum_message_size ) {
a000dcb8:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  /*                                                                  
   *  Round size up to multiple of a pointer for chain init and       
   *  check for overflow on adding overhead to each message.          
   */                                                                 
  allocated_message_size = maximum_message_size;                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
a000dcbc:	e3130003 	tst	r3, #3                                        
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
a000dcc0:	e1a04000 	mov	r4, r0                                        
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
  the_message_queue->number_of_pending_messages = 0;                  
a000dcc4:	e3a00000 	mov	r0, #0                                        
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
a000dcc8:	e1a06002 	mov	r6, r2                                        
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
a000dccc:	e5842044 	str	r2, [r4, #68]	; 0x44                          
  CORE_message_queue_Control    *the_message_queue,                   
  CORE_message_queue_Attributes *the_message_queue_attributes,        
  uint32_t                       maximum_pending_messages,            
  size_t                         maximum_message_size                 
)                                                                     
{                                                                     
a000dcd0:	e1a05001 	mov	r5, r1                                        
  size_t message_buffering_required;                                  
  size_t allocated_message_size;                                      
                                                                      
  the_message_queue->maximum_pending_messages   = maximum_pending_messages;
  the_message_queue->number_of_pending_messages = 0;                  
a000dcd4:	e5840048 	str	r0, [r4, #72]	; 0x48                          
  the_message_queue->maximum_message_size       = maximum_message_size;
a000dcd8:	e584304c 	str	r3, [r4, #76]	; 0x4c                          
    CORE_message_queue_Control        *the_message_queue,             
    CORE_message_queue_Notify_Handler  the_handler,                   
    void                              *the_argument                   
  )                                                                   
  {                                                                   
    the_message_queue->notify_handler  = the_handler;                 
a000dcdc:	e5840060 	str	r0, [r4, #96]	; 0x60                          
    the_message_queue->notify_argument = the_argument;                
a000dce0:	e5840064 	str	r0, [r4, #100]	; 0x64                         
  /*                                                                  
   *  Round size up to multiple of a pointer for chain init and       
   *  check for overflow on adding overhead to each message.          
   */                                                                 
  allocated_message_size = maximum_message_size;                      
  if (allocated_message_size & (sizeof(uint32_t) - 1)) {              
a000dce4:	01a02003 	moveq	r2, r3                                      
a000dce8:	0a000003 	beq	a000dcfc <_CORE_message_queue_Initialize+0x44>
    allocated_message_size += sizeof(uint32_t);                       
a000dcec:	e2832004 	add	r2, r3, #4                                    
    allocated_message_size &= ~(sizeof(uint32_t) - 1);                
a000dcf0:	e3c22003 	bic	r2, r2, #3                                    
  }                                                                   
                                                                      
  if (allocated_message_size < maximum_message_size)                  
a000dcf4:	e1520003 	cmp	r2, r3                                        
a000dcf8:	3a00001e 	bcc	a000dd78 <_CORE_message_queue_Initialize+0xc0>
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
a000dcfc:	e2827014 	add	r7, r2, #20                                   
                                                                      
  /*                                                                  
   *  Calculate how much total memory is required for message buffering and
   *  check for overflow on the multiplication.                       
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
a000dd00:	e0000796 	mul	r0, r6, r7                                    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
                                                                      
  if (message_buffering_required < allocated_message_size)            
a000dd04:	e1500002 	cmp	r0, r2                                        
a000dd08:	3a000018 	bcc	a000dd70 <_CORE_message_queue_Initialize+0xb8>
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
a000dd0c:	eb000b24 	bl	a00109a4 <_Workspace_Allocate>                 
                                                                      
  if (the_message_queue->message_buffers == 0)                        
a000dd10:	e3500000 	cmp	r0, #0                                        
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
     _Workspace_Allocate( message_buffering_required );               
a000dd14:	e1a01000 	mov	r1, r0                                        
    return false;                                                     
                                                                      
  /*                                                                  
   *  Attempt to allocate the message memory                          
   */                                                                 
  the_message_queue->message_buffers = (CORE_message_queue_Buffer *)  
a000dd18:	e584005c 	str	r0, [r4, #92]	; 0x5c                          
     _Workspace_Allocate( message_buffering_required );               
                                                                      
  if (the_message_queue->message_buffers == 0)                        
a000dd1c:	0a000015 	beq	a000dd78 <_CORE_message_queue_Initialize+0xc0>
                                                                      
  /*                                                                  
   *  Initialize the pool of inactive messages, pending messages,     
   *  and set of waiting threads.                                     
   */                                                                 
  _Chain_Initialize (                                                 
a000dd20:	e2840068 	add	r0, r4, #104	; 0x68                           
a000dd24:	e1a02006 	mov	r2, r6                                        
a000dd28:	e1a03007 	mov	r3, r7                                        
a000dd2c:	eb0014a2 	bl	a0012fbc <_Chain_Initialize>                   
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
a000dd30:	e2843054 	add	r3, r4, #84	; 0x54                            
    allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
  );                                                                  
                                                                      
  _Chain_Initialize_empty( &the_message_queue->Pending_messages );    
                                                                      
  _Thread_queue_Initialize(                                           
a000dd34:	e5951000 	ldr	r1, [r5]                                      
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
a000dd38:	e5843050 	str	r3, [r4, #80]	; 0x50                          
  the_chain->permanent_null = NULL;                                   
a000dd3c:	e3a03000 	mov	r3, #0                                        
a000dd40:	e5843054 	str	r3, [r4, #84]	; 0x54                          
    the_message_queue->message_buffers,                               
    (size_t) maximum_pending_messages,                                
    allocated_message_size + sizeof( CORE_message_queue_Buffer_control )
  );                                                                  
                                                                      
  _Chain_Initialize_empty( &the_message_queue->Pending_messages );    
a000dd44:	e2843050 	add	r3, r4, #80	; 0x50                            
  the_chain->last           = _Chain_Head(the_chain);                 
a000dd48:	e5843058 	str	r3, [r4, #88]	; 0x58                          
                                                                      
  _Thread_queue_Initialize(                                           
a000dd4c:	e1a00004 	mov	r0, r4                                        
a000dd50:	e3510001 	cmp	r1, #1                                        
a000dd54:	13a01000 	movne	r1, #0                                      
a000dd58:	03a01001 	moveq	r1, #1                                      
a000dd5c:	e3a02080 	mov	r2, #128	; 0x80                               
a000dd60:	e3a03006 	mov	r3, #6                                        
a000dd64:	eb000829 	bl	a000fe10 <_Thread_queue_Initialize>            
       THREAD_QUEUE_DISCIPLINE_PRIORITY : THREAD_QUEUE_DISCIPLINE_FIFO,
    STATES_WAITING_FOR_MESSAGE,                                       
    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT                                 
  );                                                                  
                                                                      
  return true;                                                        
a000dd68:	e3a00001 	mov	r0, #1                                        
a000dd6c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
   */                                                                 
  message_buffering_required = (size_t) maximum_pending_messages *    
       (allocated_message_size + sizeof(CORE_message_queue_Buffer_control));
                                                                      
  if (message_buffering_required < allocated_message_size)            
    return false;                                                     
a000dd70:	e3a00000 	mov	r0, #0                                        <== NOT EXECUTED
a000dd74:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
    STATES_WAITING_FOR_MESSAGE,                                       
    CORE_MESSAGE_QUEUE_STATUS_TIMEOUT                                 
  );                                                                  
                                                                      
  return true;                                                        
}                                                                     
a000dd78:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      

a0006ce8 <_Heap_Walk>: bool _Heap_Walk( Heap_Control *heap, int source, bool dump ) {
a0006ce8:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
a0006cec:	e5903014 	ldr	r3, [r0, #20]                                 
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
a0006cf0:	e24dd030 	sub	sp, sp, #48	; 0x30                            
  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;                      
a0006cf4:	e59f44c8 	ldr	r4, [pc, #1224]	; a00071c4 <_Heap_Walk+0x4dc> 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
a0006cf8:	e58d3024 	str	r3, [sp, #36]	; 0x24                          
  Heap_Block *const first_block = heap->first_block;                  
  Heap_Block *const last_block = heap->last_block;                    
a0006cfc:	e5903024 	ldr	r3, [r0, #36]	; 0x24                          
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
a0006d00:	e31200ff 	tst	r2, #255	; 0xff                               
  bool dump                                                           
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  uintptr_t const min_block_size = heap->min_block_size;              
  Heap_Block *const first_block = heap->first_block;                  
a0006d04:	e590c020 	ldr	ip, [r0, #32]                                 
  Heap_Block *const last_block = heap->last_block;                    
a0006d08:	e58d3028 	str	r3, [sp, #40]	; 0x28                          
  Heap_Block *block = first_block;                                    
  Heap_Walk_printer printer = dump ?                                  
    _Heap_Walk_print : _Heap_Walk_print_nothing;                      
a0006d0c:	e59f34b4 	ldr	r3, [pc, #1204]	; a00071c8 <_Heap_Walk+0x4e0> 
bool _Heap_Walk(                                                      
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
a0006d10:	e1a06000 	mov	r6, r0                                        
a0006d14:	e1a05001 	mov	r5, r1                                        
  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;                      
a0006d18:	11a04003 	movne	r4, r3                                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
a0006d1c:	e59f34a8 	ldr	r3, [pc, #1192]	; a00071cc <_Heap_Walk+0x4e4> 
  Heap_Control *heap,                                                 
  int source,                                                         
  bool dump                                                           
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
a0006d20:	e5909010 	ldr	r9, [r0, #16]                                 
  uintptr_t const min_block_size = heap->min_block_size;              
  Heap_Block *const first_block = heap->first_block;                  
a0006d24:	e58dc020 	str	ip, [sp, #32]                                 
  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;                      
                                                                      
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
a0006d28:	e5933000 	ldr	r3, [r3]                                      
a0006d2c:	e3530003 	cmp	r3, #3                                        
a0006d30:	1a000118 	bne	a0007198 <_Heap_Walk+0x4b0>                   
  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)(                                                         
a0006d34:	e59dc024 	ldr	ip, [sp, #36]	; 0x24                          
a0006d38:	e59d2020 	ldr	r2, [sp, #32]                                 
a0006d3c:	e58dc000 	str	ip, [sp]                                      
a0006d40:	e5903018 	ldr	r3, [r0, #24]                                 
a0006d44:	e58d3004 	str	r3, [sp, #4]                                  
a0006d48:	e590301c 	ldr	r3, [r0, #28]                                 
a0006d4c:	e58d200c 	str	r2, [sp, #12]                                 
a0006d50:	e59f2478 	ldr	r2, [pc, #1144]	; a00071d0 <_Heap_Walk+0x4e8> 
a0006d54:	e58d3008 	str	r3, [sp, #8]                                  
a0006d58:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
a0006d5c:	e58d3010 	str	r3, [sp, #16]                                 
a0006d60:	e5903008 	ldr	r3, [r0, #8]                                  
a0006d64:	e58d3014 	str	r3, [sp, #20]                                 
a0006d68:	e590300c 	ldr	r3, [r0, #12]                                 
a0006d6c:	e1a00001 	mov	r0, r1                                        
a0006d70:	e3a01000 	mov	r1, #0                                        
a0006d74:	e58d3018 	str	r3, [sp, #24]                                 
a0006d78:	e1a03009 	mov	r3, r9                                        
a0006d7c:	e12fff34 	blx	r4                                            
    heap->area_begin, heap->area_end,                                 
    first_block, last_block,                                          
    first_free_block, last_free_block                                 
  );                                                                  
                                                                      
  if ( page_size == 0 ) {                                             
a0006d80:	e3590000 	cmp	r9, #0                                        
a0006d84:	1a000005 	bne	a0006da0 <_Heap_Walk+0xb8>                    
    (*printer)( source, true, "page size is zero\n" );                
a0006d88:	e1a00005 	mov	r0, r5                                        
a0006d8c:	e3a01001 	mov	r1, #1                                        
a0006d90:	e59f243c 	ldr	r2, [pc, #1084]	; a00071d4 <_Heap_Walk+0x4ec> 
a0006d94:	e12fff34 	blx	r4                                            
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
a0006d98:	e1a08009 	mov	r8, r9                                        
a0006d9c:	ea0000fe 	b	a000719c <_Heap_Walk+0x4b4>                     
    (*printer)( source, true, "page size is zero\n" );                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Addresses_Is_aligned( (void *) page_size ) ) {               
a0006da0:	e2198003 	ands	r8, r9, #3                                   
    (*printer)(                                                       
a0006da4:	11a00005 	movne	r0, r5                                      
a0006da8:	13a01001 	movne	r1, #1                                      
a0006dac:	159f2424 	ldrne	r2, [pc, #1060]	; a00071d8 <_Heap_Walk+0x4f0>
a0006db0:	11a03009 	movne	r3, r9                                      
a0006db4:	1a0000ff 	bne	a00071b8 <_Heap_Walk+0x4d0>                   
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
a0006db8:	e59d0024 	ldr	r0, [sp, #36]	; 0x24                          
a0006dbc:	e1a01009 	mov	r1, r9                                        
a0006dc0:	ebffe72b 	bl	a0000a74 <__umodsi3>                           
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_aligned( min_block_size, page_size ) ) {             
a0006dc4:	e250b000 	subs	fp, r0, #0                                   
a0006dc8:	0a000005 	beq	a0006de4 <_Heap_Walk+0xfc>                    
    (*printer)(                                                       
a0006dcc:	e1a00005 	mov	r0, r5                                        
a0006dd0:	e3a01001 	mov	r1, #1                                        
a0006dd4:	e59f2400 	ldr	r2, [pc, #1024]	; a00071dc <_Heap_Walk+0x4f4> 
a0006dd8:	e59d3024 	ldr	r3, [sp, #36]	; 0x24                          
a0006ddc:	e12fff34 	blx	r4                                            
a0006de0:	ea0000ed 	b	a000719c <_Heap_Walk+0x4b4>                     
a0006de4:	e59dc020 	ldr	ip, [sp, #32]                                 
a0006de8:	e1a01009 	mov	r1, r9                                        
a0006dec:	e28c0008 	add	r0, ip, #8                                    
a0006df0:	ebffe71f 	bl	a0000a74 <__umodsi3>                           
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
a0006df4:	e250a000 	subs	sl, r0, #0                                   
    !_Heap_Is_aligned( _Heap_Alloc_area_of_block( first_block ), page_size )
  ) {                                                                 
    (*printer)(                                                       
a0006df8:	11a00005 	movne	r0, r5                                      
a0006dfc:	13a01001 	movne	r1, #1                                      
a0006e00:	159f23d8 	ldrne	r2, [pc, #984]	; a00071e0 <_Heap_Walk+0x4f8>
a0006e04:	159d3020 	ldrne	r3, [sp, #32]                               
a0006e08:	1a0000c3 	bne	a000711c <_Heap_Walk+0x434>                   
  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;                 
a0006e0c:	e59d2020 	ldr	r2, [sp, #32]                                 
a0006e10:	e5928004 	ldr	r8, [r2, #4]                                  
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Is_prev_used( first_block ) ) {                         
a0006e14:	e2188001 	ands	r8, r8, #1                                   
    (*printer)(                                                       
a0006e18:	01a00005 	moveq	r0, r5                                      
a0006e1c:	03a01001 	moveq	r1, #1                                      
a0006e20:	059f23bc 	ldreq	r2, [pc, #956]	; a00071e4 <_Heap_Walk+0x4fc>
a0006e24:	0a000009 	beq	a0006e50 <_Heap_Walk+0x168>                   
    - 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;                
a0006e28:	e59d3028 	ldr	r3, [sp, #40]	; 0x28                          
a0006e2c:	e5937004 	ldr	r7, [r3, #4]                                  
a0006e30:	e3c77001 	bic	r7, r7, #1                                    
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
a0006e34:	e0837007 	add	r7, r3, r7                                    
  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;                 
a0006e38:	e5978004 	ldr	r8, [r7, #4]                                  
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( _Heap_Is_free( last_block ) ) {                                
a0006e3c:	e2188001 	ands	r8, r8, #1                                   
a0006e40:	1a000004 	bne	a0006e58 <_Heap_Walk+0x170>                   
    (*printer)(                                                       
a0006e44:	e59f239c 	ldr	r2, [pc, #924]	; a00071e8 <_Heap_Walk+0x500>  
a0006e48:	e1a00005 	mov	r0, r5                                        
a0006e4c:	e3a01001 	mov	r1, #1                                        
a0006e50:	e12fff34 	blx	r4                                            
a0006e54:	ea0000d0 	b	a000719c <_Heap_Walk+0x4b4>                     
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if (                                                                
a0006e58:	e59dc020 	ldr	ip, [sp, #32]                                 
a0006e5c:	e157000c 	cmp	r7, ip                                        
a0006e60:	0a000005 	beq	a0006e7c <_Heap_Walk+0x194>                   
    _Heap_Block_at( last_block, _Heap_Block_size( last_block ) ) != first_block
  ) {                                                                 
    (*printer)(                                                       
a0006e64:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
a0006e68:	e3a01001 	mov	r1, #1                                        <== NOT EXECUTED
a0006e6c:	e59f2378 	ldr	r2, [pc, #888]	; a00071ec <_Heap_Walk+0x504>  <== NOT EXECUTED
a0006e70:	e12fff34 	blx	r4                                            <== NOT EXECUTED
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
a0006e74:	e1a0800a 	mov	r8, sl                                        <== NOT EXECUTED
a0006e78:	ea0000c7 	b	a000719c <_Heap_Walk+0x4b4>                     <== NOT EXECUTED
  int source,                                                         
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
a0006e7c:	e596b010 	ldr	fp, [r6, #16]                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
a0006e80:	e5968008 	ldr	r8, [r6, #8]                                  
  Heap_Walk_printer printer,                                          
  Heap_Control *heap                                                  
)                                                                     
{                                                                     
  uintptr_t const page_size = heap->page_size;                        
  const Heap_Block *const free_list_tail = _Heap_Free_list_tail( heap );
a0006e84:	e1a0a006 	mov	sl, r6                                        
a0006e88:	ea000032 	b	a0006f58 <_Heap_Walk+0x270>                     
  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;             
a0006e8c:	e5963020 	ldr	r3, [r6, #32]                                 
a0006e90:	e1530008 	cmp	r3, r8                                        
a0006e94:	83a0c000 	movhi	ip, #0                                      
a0006e98:	8a000003 	bhi	a0006eac <_Heap_Walk+0x1c4>                   
a0006e9c:	e596c024 	ldr	ip, [r6, #36]	; 0x24                          
a0006ea0:	e15c0008 	cmp	ip, r8                                        
a0006ea4:	33a0c000 	movcc	ip, #0                                      
a0006ea8:	23a0c001 	movcs	ip, #1                                      
  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 ) ) {              
a0006eac:	e21cc0ff 	ands	ip, ip, #255	; 0xff                          
      (*printer)(                                                     
a0006eb0:	01a00005 	moveq	r0, r5                                      
a0006eb4:	03a01001 	moveq	r1, #1                                      
a0006eb8:	059f2330 	ldreq	r2, [pc, #816]	; a00071f0 <_Heap_Walk+0x508>
a0006ebc:	0a000012 	beq	a0006f0c <_Heap_Walk+0x224>                   
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
a0006ec0:	e2880008 	add	r0, r8, #8                                    
a0006ec4:	e1a0100b 	mov	r1, fp                                        
a0006ec8:	ebffe6e9 	bl	a0000a74 <__umodsi3>                           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if (                                                              
a0006ecc:	e250c000 	subs	ip, r0, #0                                   
      !_Heap_Is_aligned( _Heap_Alloc_area_of_block( free_block ), page_size )
    ) {                                                               
      (*printer)(                                                     
a0006ed0:	11a00005 	movne	r0, r5                                      
a0006ed4:	13a01001 	movne	r1, #1                                      
a0006ed8:	159f2314 	ldrne	r2, [pc, #788]	; a00071f4 <_Heap_Walk+0x50c>
a0006edc:	11a03008 	movne	r3, r8                                      
a0006ee0:	1a0000b4 	bne	a00071b8 <_Heap_Walk+0x4d0>                   
    - 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;                
a0006ee4:	e5983004 	ldr	r3, [r8, #4]                                  
a0006ee8:	e3c33001 	bic	r3, r3, #1                                    
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
a0006eec:	e0883003 	add	r3, r8, r3                                    
  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;                 
a0006ef0:	e5933004 	ldr	r3, [r3, #4]                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( _Heap_Is_used( free_block ) ) {                              
a0006ef4:	e2133001 	ands	r3, r3, #1                                   
a0006ef8:	e58d302c 	str	r3, [sp, #44]	; 0x2c                          
a0006efc:	0a000008 	beq	a0006f24 <_Heap_Walk+0x23c>                   
      (*printer)(                                                     
a0006f00:	e59f22f0 	ldr	r2, [pc, #752]	; a00071f8 <_Heap_Walk+0x510>  
a0006f04:	e1a00005 	mov	r0, r5                                        
a0006f08:	e3a01001 	mov	r1, #1                                        
a0006f0c:	e1a03008 	mov	r3, r8                                        
a0006f10:	e58dc01c 	str	ip, [sp, #28]                                 
a0006f14:	e12fff34 	blx	r4                                            
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
a0006f18:	e59dc01c 	ldr	ip, [sp, #28]                                 
a0006f1c:	e1a0800c 	mov	r8, ip                                        
a0006f20:	ea00009d 	b	a000719c <_Heap_Walk+0x4b4>                     
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( free_block->prev != prev_block ) {                           
a0006f24:	e598300c 	ldr	r3, [r8, #12]                                 
a0006f28:	e153000a 	cmp	r3, sl                                        
a0006f2c:	0a000007 	beq	a0006f50 <_Heap_Walk+0x268>                   
      (*printer)(                                                     
a0006f30:	e58d3000 	str	r3, [sp]                                      
a0006f34:	e1a00005 	mov	r0, r5                                        
a0006f38:	e1a03008 	mov	r3, r8                                        
a0006f3c:	e3a01001 	mov	r1, #1                                        
a0006f40:	e59f22b4 	ldr	r2, [pc, #692]	; a00071fc <_Heap_Walk+0x514>  
a0006f44:	e12fff34 	blx	r4                                            
  if ( !_System_state_Is_up( _System_state_Get() ) ) {                
    return true;                                                      
  }                                                                   
                                                                      
  if ( !_Heap_Walk_check_control( source, printer, heap ) ) {         
    return false;                                                     
a0006f48:	e59d802c 	ldr	r8, [sp, #44]	; 0x2c                          
a0006f4c:	ea000092 	b	a000719c <_Heap_Walk+0x4b4>                     
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    prev_block = free_block;                                          
    free_block = free_block->next;                                    
a0006f50:	e1a0a008 	mov	sl, r8                                        
a0006f54:	e5988008 	ldr	r8, [r8, #8]                                  
  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 ) {                            
a0006f58:	e1580006 	cmp	r8, r6                                        
a0006f5c:	1affffca 	bne	a0006e8c <_Heap_Walk+0x1a4>                   
a0006f60:	ea000000 	b	a0006f68 <_Heap_Walk+0x280>                     
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
a0006f64:	e1a07008 	mov	r7, r8                                        
                                                                      
  return true;                                                        
}                                                                     
a0006f68:	e5973004 	ldr	r3, [r7, #4]                                  
  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;             
a0006f6c:	e5962020 	ldr	r2, [r6, #32]                                 
    - 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;                
a0006f70:	e3c3a001 	bic	sl, r3, #1                                    
RTEMS_INLINE_ROUTINE Heap_Block *_Heap_Block_at(                      
  const Heap_Block *block,                                            
  uintptr_t offset                                                    
)                                                                     
{                                                                     
  return (Heap_Block *) ((uintptr_t) block + offset);                 
a0006f74:	e087800a 	add	r8, r7, sl                                    
  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;             
a0006f78:	e1520008 	cmp	r2, r8                                        
a0006f7c:	83a0b000 	movhi	fp, #0                                      
a0006f80:	8a000003 	bhi	a0006f94 <_Heap_Walk+0x2ac>                   
a0006f84:	e596b024 	ldr	fp, [r6, #36]	; 0x24                          
a0006f88:	e15b0008 	cmp	fp, r8                                        
a0006f8c:	33a0b000 	movcc	fp, #0                                      
a0006f90:	23a0b001 	movcs	fp, #1                                      
    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 ) ) {              
a0006f94:	e21bb0ff 	ands	fp, fp, #255	; 0xff                          
a0006f98:	1a000006 	bne	a0006fb8 <_Heap_Walk+0x2d0>                   
      (*printer)(                                                     
a0006f9c:	e58d8000 	str	r8, [sp]                                      
a0006fa0:	e1a00005 	mov	r0, r5                                        
a0006fa4:	e3a01001 	mov	r1, #1                                        
a0006fa8:	e59f2250 	ldr	r2, [pc, #592]	; a0007200 <_Heap_Walk+0x518>  
a0006fac:	e1a03007 	mov	r3, r7                                        
a0006fb0:	e12fff34 	blx	r4                                            
a0006fb4:	ea000059 	b	a0007120 <_Heap_Walk+0x438>                     
    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;               
a0006fb8:	e59d2028 	ldr	r2, [sp, #40]	; 0x28                          
RTEMS_INLINE_ROUTINE bool _Heap_Is_aligned(                           
  uintptr_t value,                                                    
  uintptr_t alignment                                                 
)                                                                     
{                                                                     
  return (value % alignment) == 0;                                    
a0006fbc:	e1a0000a 	mov	r0, sl                                        
a0006fc0:	e1a01009 	mov	r1, r9                                        
a0006fc4:	e057b002 	subs	fp, r7, r2                                   
a0006fc8:	13a0b001 	movne	fp, #1                                      
a0006fcc:	e58d301c 	str	r3, [sp, #28]                                 
a0006fd0:	ebffe6a7 	bl	a0000a74 <__umodsi3>                           
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_aligned( block_size, page_size ) && is_not_last_block ) {
a0006fd4:	e3500000 	cmp	r0, #0                                        
a0006fd8:	e59d301c 	ldr	r3, [sp, #28]                                 
a0006fdc:	0a000005 	beq	a0006ff8 <_Heap_Walk+0x310>                   
a0006fe0:	e35b0000 	cmp	fp, #0                                        
      (*printer)(                                                     
a0006fe4:	158da000 	strne	sl, [sp]                                    
a0006fe8:	11a00005 	movne	r0, r5                                      
a0006fec:	13a01001 	movne	r1, #1                                      
a0006ff0:	159f220c 	ldrne	r2, [pc, #524]	; a0007204 <_Heap_Walk+0x51c>
a0006ff4:	1a000013 	bne	a0007048 <_Heap_Walk+0x360>                   
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( block_size < min_block_size && is_not_last_block ) {         
a0006ff8:	e59dc024 	ldr	ip, [sp, #36]	; 0x24                          
a0006ffc:	e15a000c 	cmp	sl, ip                                        
a0007000:	2a000008 	bcs	a0007028 <_Heap_Walk+0x340>                   
a0007004:	e35b0000 	cmp	fp, #0                                        
a0007008:	0a000006 	beq	a0007028 <_Heap_Walk+0x340>                   
      (*printer)(                                                     
a000700c:	e88d1400 	stm	sp, {sl, ip}                                  
a0007010:	e1a00005 	mov	r0, r5                                        
a0007014:	e3a01001 	mov	r1, #1                                        
a0007018:	e59f21e8 	ldr	r2, [pc, #488]	; a0007208 <_Heap_Walk+0x520>  
a000701c:	e1a03007 	mov	r3, r7                                        
a0007020:	e12fff34 	blx	r4                                            
a0007024:	ea000064 	b	a00071bc <_Heap_Walk+0x4d4>                     
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( next_block_begin <= block_begin && is_not_last_block ) {     
a0007028:	e1580007 	cmp	r8, r7                                        
a000702c:	8a000008 	bhi	a0007054 <_Heap_Walk+0x36c>                   
a0007030:	e35b0000 	cmp	fp, #0                                        
a0007034:	0a000006 	beq	a0007054 <_Heap_Walk+0x36c>                   
      (*printer)(                                                     
a0007038:	e59f21cc 	ldr	r2, [pc, #460]	; a000720c <_Heap_Walk+0x524>  
a000703c:	e58d8000 	str	r8, [sp]                                      
a0007040:	e1a00005 	mov	r0, r5                                        
a0007044:	e3a01001 	mov	r1, #1                                        
a0007048:	e1a03007 	mov	r3, r7                                        
a000704c:	e12fff34 	blx	r4                                            
a0007050:	ea000059 	b	a00071bc <_Heap_Walk+0x4d4>                     
  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;                 
a0007054:	e203b001 	and	fp, r3, #1                                    
a0007058:	e5983004 	ldr	r3, [r8, #4]                                  
      );                                                              
                                                                      
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
a000705c:	e3130001 	tst	r3, #1                                        
a0007060:	1a000038 	bne	a0007148 <_Heap_Walk+0x460>                   
    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 ?                                 
a0007064:	e597200c 	ldr	r2, [r7, #12]                                 
  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)(                                                         
a0007068:	e5963008 	ldr	r3, [r6, #8]                                  
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
a000706c:	e596100c 	ldr	r1, [r6, #12]                                 
  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)(                                                         
a0007070:	e1520003 	cmp	r2, r3                                        
a0007074:	059f0194 	ldreq	r0, [pc, #404]	; a0007210 <_Heap_Walk+0x528>
a0007078:	0a000003 	beq	a000708c <_Heap_Walk+0x3a4>                   
    block,                                                            
    block_size,                                                       
    block->prev,                                                      
    block->prev == first_free_block ?                                 
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
a000707c:	e59f3190 	ldr	r3, [pc, #400]	; a0007214 <_Heap_Walk+0x52c>  
a0007080:	e1520006 	cmp	r2, r6                                        
a0007084:	e59f018c 	ldr	r0, [pc, #396]	; a0007218 <_Heap_Walk+0x530>  
a0007088:	01a00003 	moveq	r0, r3                                      
    block->next,                                                      
    block->next == last_free_block ?                                  
a000708c:	e5973008 	ldr	r3, [r7, #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)(                                                         
a0007090:	e1530001 	cmp	r3, r1                                        
a0007094:	059f1180 	ldreq	r1, [pc, #384]	; a000721c <_Heap_Walk+0x534>
a0007098:	0a000003 	beq	a00070ac <_Heap_Walk+0x3c4>                   
      " (= first free)"                                               
        : (block->prev == free_list_head ? " (= head)" : ""),         
    block->next,                                                      
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
a000709c:	e59fc17c 	ldr	ip, [pc, #380]	; a0007220 <_Heap_Walk+0x538>  
a00070a0:	e1530006 	cmp	r3, r6                                        
a00070a4:	e59f116c 	ldr	r1, [pc, #364]	; a0007218 <_Heap_Walk+0x530>  
a00070a8:	01a0100c 	moveq	r1, ip                                      
  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)(                                                         
a00070ac:	e58d2004 	str	r2, [sp, #4]                                  
a00070b0:	e58d0008 	str	r0, [sp, #8]                                  
a00070b4:	e58d300c 	str	r3, [sp, #12]                                 
a00070b8:	e58d1010 	str	r1, [sp, #16]                                 
a00070bc:	e1a03007 	mov	r3, r7                                        
a00070c0:	e58da000 	str	sl, [sp]                                      
a00070c4:	e1a00005 	mov	r0, r5                                        
a00070c8:	e3a01000 	mov	r1, #0                                        
a00070cc:	e59f2150 	ldr	r2, [pc, #336]	; a0007224 <_Heap_Walk+0x53c>  
a00070d0:	e12fff34 	blx	r4                                            
    block->next == last_free_block ?                                  
      " (= last free)"                                                
        : (block->next == free_list_tail ? " (= tail)" : "")          
  );                                                                  
                                                                      
  if ( block_size != next_block->prev_size ) {                        
a00070d4:	e5983000 	ldr	r3, [r8]                                      
a00070d8:	e15a0003 	cmp	sl, r3                                        
a00070dc:	0a000008 	beq	a0007104 <_Heap_Walk+0x41c>                   
    (*printer)(                                                       
a00070e0:	e58d3004 	str	r3, [sp, #4]                                  
a00070e4:	e58da000 	str	sl, [sp]                                      
a00070e8:	e58d8008 	str	r8, [sp, #8]                                  
a00070ec:	e1a00005 	mov	r0, r5                                        
a00070f0:	e3a01001 	mov	r1, #1                                        
a00070f4:	e59f212c 	ldr	r2, [pc, #300]	; a0007228 <_Heap_Walk+0x540>  
a00070f8:	e1a03007 	mov	r3, r7                                        
a00070fc:	e12fff34 	blx	r4                                            
a0007100:	ea00002d 	b	a00071bc <_Heap_Walk+0x4d4>                     
    );                                                                
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !prev_used ) {                                                 
a0007104:	e35b0000 	cmp	fp, #0                                        
a0007108:	1a000006 	bne	a0007128 <_Heap_Walk+0x440>                   
    (*printer)(                                                       
a000710c:	e59f2118 	ldr	r2, [pc, #280]	; a000722c <_Heap_Walk+0x544>  
a0007110:	e1a00005 	mov	r0, r5                                        
a0007114:	e3a01001 	mov	r1, #1                                        
a0007118:	e1a03007 	mov	r3, r7                                        
a000711c:	e12fff34 	blx	r4                                            
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
a0007120:	e1a0800b 	mov	r8, fp                                        
a0007124:	ea00001c 	b	a000719c <_Heap_Walk+0x4b4>                     
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
a0007128:	e5963008 	ldr	r3, [r6, #8]                                  
a000712c:	ea000002 	b	a000713c <_Heap_Walk+0x454>                     
{                                                                     
  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 ) {                                      
a0007130:	e1530007 	cmp	r3, r7                                        
a0007134:	0a000014 	beq	a000718c <_Heap_Walk+0x4a4>                   
      return true;                                                    
    }                                                                 
    free_block = free_block->next;                                    
a0007138:	e5933008 	ldr	r3, [r3, #8]                                  
)                                                                     
{                                                                     
  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 ) {                            
a000713c:	e1530006 	cmp	r3, r6                                        
a0007140:	1afffffa 	bne	a0007130 <_Heap_Walk+0x448>                   
a0007144:	ea000017 	b	a00071a8 <_Heap_Walk+0x4c0>                     
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
      }                                                               
    } else if (prev_used) {                                           
a0007148:	e35b0000 	cmp	fp, #0                                        
a000714c:	0a000006 	beq	a000716c <_Heap_Walk+0x484>                   
      (*printer)(                                                     
a0007150:	e58da000 	str	sl, [sp]                                      
a0007154:	e1a00005 	mov	r0, r5                                        
a0007158:	e3a01000 	mov	r1, #0                                        
a000715c:	e59f20cc 	ldr	r2, [pc, #204]	; a0007230 <_Heap_Walk+0x548>  
a0007160:	e1a03007 	mov	r3, r7                                        
a0007164:	e12fff34 	blx	r4                                            
a0007168:	ea000007 	b	a000718c <_Heap_Walk+0x4a4>                     
        "block 0x%08x: size %u\n",                                    
        block,                                                        
        block_size                                                    
      );                                                              
    } else {                                                          
      (*printer)(                                                     
a000716c:	e58da000 	str	sl, [sp]                                      
a0007170:	e5973000 	ldr	r3, [r7]                                      
a0007174:	e1a00005 	mov	r0, r5                                        
a0007178:	e1a0100b 	mov	r1, fp                                        
a000717c:	e58d3004 	str	r3, [sp, #4]                                  
a0007180:	e59f20ac 	ldr	r2, [pc, #172]	; a0007234 <_Heap_Walk+0x54c>  
a0007184:	e1a03007 	mov	r3, r7                                        
a0007188:	e12fff34 	blx	r4                                            
        block->prev_size                                              
      );                                                              
    }                                                                 
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
a000718c:	e59d2020 	ldr	r2, [sp, #32]                                 
a0007190:	e1580002 	cmp	r8, r2                                        
a0007194:	1affff72 	bne	a0006f64 <_Heap_Walk+0x27c>                   
  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;                                                      
a0007198:	e3a08001 	mov	r8, #1                                        
                                                                      
    block = next_block;                                               
  } while ( block != first_block );                                   
                                                                      
  return true;                                                        
}                                                                     
a000719c:	e1a00008 	mov	r0, r8                                        
a00071a0:	e28dd030 	add	sp, sp, #48	; 0x30                            
a00071a4:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      
    return false;                                                     
  }                                                                   
                                                                      
  if ( !_Heap_Walk_is_in_free_list( heap, block ) ) {                 
    (*printer)(                                                       
a00071a8:	e59f2088 	ldr	r2, [pc, #136]	; a0007238 <_Heap_Walk+0x550>  
a00071ac:	e1a00005 	mov	r0, r5                                        
a00071b0:	e3a01001 	mov	r1, #1                                        
a00071b4:	e1a03007 	mov	r3, r7                                        
a00071b8:	e12fff34 	blx	r4                                            
      return false;                                                   
    }                                                                 
                                                                      
    if ( !_Heap_Is_prev_used( next_block ) ) {                        
      if ( !_Heap_Walk_check_free_block( source, printer, heap, block ) ) {
        return false;                                                 
a00071bc:	e3a08000 	mov	r8, #0                                        
a00071c0:	eafffff5 	b	a000719c <_Heap_Walk+0x4b4>                     
                                                                      

a0007b58 <_Objects_Id_to_name>: */ Objects_Name_or_id_lookup_errors _Objects_Id_to_name ( Objects_Id id, Objects_Name *name ) {
a0007b58:	e92d4031 	push	{r0, r4, r5, lr}                             
a0007b5c:	e1a05001 	mov	r5, r1                                        
                                                                      
  /*                                                                  
   *  Caller is trusted for name != NULL.                             
   */                                                                 
                                                                      
  tmpId = (id == OBJECTS_ID_OF_SELF) ? _Thread_Executing->Object.id : id;
a0007b60:	e2501000 	subs	r1, r0, #0                                   
a0007b64:	059f3078 	ldreq	r3, [pc, #120]	; a0007be4 <_Objects_Id_to_name+0x8c>
a0007b68:	05933004 	ldreq	r3, [r3, #4]                                
a0007b6c:	05931008 	ldreq	r1, [r3, #8]                                
a0007b70:	e1a03c21 	lsr	r3, r1, #24                                   
a0007b74:	e2033007 	and	r3, r3, #7                                    
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Objects_Is_api_valid(                      
  uint32_t   the_api                                                  
)                                                                     
{                                                                     
  if ( !the_api || the_api > OBJECTS_APIS_LAST )                      
a0007b78:	e2432001 	sub	r2, r3, #1                                    
a0007b7c:	e3520002 	cmp	r2, #2                                        
a0007b80:	8a000010 	bhi	a0007bc8 <_Objects_Id_to_name+0x70>           
a0007b84:	ea000011 	b	a0007bd0 <_Objects_Id_to_name+0x78>             
 */                                                                   
RTEMS_INLINE_ROUTINE uint32_t _Objects_Get_class(                     
  Objects_Id id                                                       
)                                                                     
{                                                                     
  return (uint32_t)                                                   
a0007b88:	e1a02da1 	lsr	r2, r1, #27                                   
  if ( !_Objects_Information_table[ the_api ] )                       
    return OBJECTS_INVALID_ID;                                        
                                                                      
  the_class = _Objects_Get_class( tmpId );                            
                                                                      
  information = _Objects_Information_table[ the_api ][ the_class ];   
a0007b8c:	e7930102 	ldr	r0, [r3, r2, lsl #2]                          
  if ( !information )                                                 
a0007b90:	e3500000 	cmp	r0, #0                                        
a0007b94:	0a00000b 	beq	a0007bc8 <_Objects_Id_to_name+0x70>           
    return OBJECTS_INVALID_ID;                                        
                                                                      
  #if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                 
    if ( information->is_string )                                     
a0007b98:	e5d04038 	ldrb	r4, [r0, #56]	; 0x38                         
a0007b9c:	e3540000 	cmp	r4, #0                                        
a0007ba0:	1a000008 	bne	a0007bc8 <_Objects_Id_to_name+0x70>           
      return OBJECTS_INVALID_ID;                                      
  #endif                                                              
                                                                      
  the_object = _Objects_Get( information, tmpId, &ignored_location ); 
a0007ba4:	e1a0200d 	mov	r2, sp                                        
a0007ba8:	ebffffd0 	bl	a0007af0 <_Objects_Get>                        
  if ( !the_object )                                                  
a0007bac:	e3500000 	cmp	r0, #0                                        
a0007bb0:	0a000004 	beq	a0007bc8 <_Objects_Id_to_name+0x70>           
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
a0007bb4:	e590300c 	ldr	r3, [r0, #12]                                 
a0007bb8:	e5853000 	str	r3, [r5]                                      
  _Thread_Enable_dispatch();                                          
a0007bbc:	eb00021f 	bl	a0008440 <_Thread_Enable_dispatch>             
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
a0007bc0:	e1a00004 	mov	r0, r4                                        
a0007bc4:	ea000000 	b	a0007bcc <_Objects_Id_to_name+0x74>             
  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;                                        
a0007bc8:	e3a00003 	mov	r0, #3                                        
    return OBJECTS_INVALID_ID;                                        
                                                                      
  *name = the_object->name;                                           
  _Thread_Enable_dispatch();                                          
  return OBJECTS_NAME_OR_ID_LOOKUP_SUCCESSFUL;                        
}                                                                     
a0007bcc:	e8bd8038 	pop	{r3, r4, r5, pc}                              
                                                                      
  the_api = _Objects_Get_API( tmpId );                                
  if ( !_Objects_Is_api_valid( the_api ) )                            
    return OBJECTS_INVALID_ID;                                        
                                                                      
  if ( !_Objects_Information_table[ the_api ] )                       
a0007bd0:	e59f2010 	ldr	r2, [pc, #16]	; a0007be8 <_Objects_Id_to_name+0x90>
a0007bd4:	e7923103 	ldr	r3, [r2, r3, lsl #2]                          
a0007bd8:	e3530000 	cmp	r3, #0                                        
a0007bdc:	1affffe9 	bne	a0007b88 <_Objects_Id_to_name+0x30>           
a0007be0:	eafffff8 	b	a0007bc8 <_Objects_Id_to_name+0x70>             <== NOT EXECUTED
                                                                      

a0006e54 <_Objects_Set_name>: bool _Objects_Set_name( Objects_Information *information, Objects_Control *the_object, const char *name ) {
a0006e54:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
a0006e58:	e1a05000 	mov	r5, r0                                        
a0006e5c:	e1a06001 	mov	r6, r1                                        
  size_t                 length;                                      
  const char            *s;                                           
                                                                      
  s      = name;                                                      
  length = strnlen( name, information->name_length );                 
a0006e60:	e1a00002 	mov	r0, r2                                        
a0006e64:	e1d513ba 	ldrh	r1, [r5, #58]	; 0x3a                         
bool _Objects_Set_name(                                               
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  const char          *name                                           
)                                                                     
{                                                                     
a0006e68:	e1a07002 	mov	r7, r2                                        
  size_t                 length;                                      
  const char            *s;                                           
                                                                      
  s      = name;                                                      
  length = strnlen( name, information->name_length );                 
a0006e6c:	eb002024 	bl	a000ef04 <strnlen>                             
                                                                      
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                   
  if ( information->is_string ) {                                     
a0006e70:	e5d53038 	ldrb	r3, [r5, #56]	; 0x38                         
{                                                                     
  size_t                 length;                                      
  const char            *s;                                           
                                                                      
  s      = name;                                                      
  length = strnlen( name, information->name_length );                 
a0006e74:	e1a04000 	mov	r4, r0                                        
                                                                      
#if defined(RTEMS_SCORE_OBJECT_ENABLE_STRING_NAMES)                   
  if ( information->is_string ) {                                     
a0006e78:	e3530000 	cmp	r3, #0                                        
a0006e7c:	0a000011 	beq	a0006ec8 <_Objects_Set_name+0x74>             
    char *d;                                                          
                                                                      
    d = _Workspace_Allocate( length + 1 );                            
a0006e80:	e2800001 	add	r0, r0, #1                                    
a0006e84:	eb000693 	bl	a00088d8 <_Workspace_Allocate>                 
    if ( !d )                                                         
a0006e88:	e2505000 	subs	r5, r0, #0                                   
a0006e8c:	0a000020 	beq	a0006f14 <_Objects_Set_name+0xc0>             
      return false;                                                   
                                                                      
    if ( the_object->name.name_p ) {                                  
a0006e90:	e596000c 	ldr	r0, [r6, #12]                                 
a0006e94:	e3500000 	cmp	r0, #0                                        
a0006e98:	0a000002 	beq	a0006ea8 <_Objects_Set_name+0x54>             
      _Workspace_Free( (void *)the_object->name.name_p );             
a0006e9c:	eb000693 	bl	a00088f0 <_Workspace_Free>                     
      the_object->name.name_p = NULL;                                 
a0006ea0:	e3a03000 	mov	r3, #0                                        
a0006ea4:	e586300c 	str	r3, [r6, #12]                                 
    }                                                                 
                                                                      
    strncpy( d, name, length );                                       
a0006ea8:	e1a00005 	mov	r0, r5                                        
a0006eac:	e1a01007 	mov	r1, r7                                        
a0006eb0:	e1a02004 	mov	r2, r4                                        
a0006eb4:	eb001fd7 	bl	a000ee18 <strncpy>                             
    d[length] = '\0';                                                 
a0006eb8:	e3a03000 	mov	r3, #0                                        
a0006ebc:	e7c53004 	strb	r3, [r5, r4]                                 
    the_object->name.name_p = d;                                      
a0006ec0:	e586500c 	str	r5, [r6, #12]                                 
a0006ec4:	ea000010 	b	a0006f0c <_Objects_Set_name+0xb8>               
  } else                                                              
#endif                                                                
  {                                                                   
    the_object->name.name_u32 =  _Objects_Build_name(                 
a0006ec8:	e3500001 	cmp	r0, #1                                        
a0006ecc:	85d73001 	ldrbhi	r3, [r7, #1]                               
a0006ed0:	e5d72000 	ldrb	r2, [r7]                                     
a0006ed4:	93a03602 	movls	r3, #2097152	; 0x200000                     
a0006ed8:	81a03803 	lslhi	r3, r3, #16                                 
a0006edc:	e1a02c02 	lsl	r2, r2, #24                                   
a0006ee0:	e3500002 	cmp	r0, #2                                        
a0006ee4:	e1832002 	orr	r2, r3, r2                                    
a0006ee8:	85d73002 	ldrbhi	r3, [r7, #2]                               
a0006eec:	93a03a02 	movls	r3, #8192	; 0x2000                          
a0006ef0:	81a03403 	lslhi	r3, r3, #8                                  
a0006ef4:	e3500003 	cmp	r0, #3                                        
a0006ef8:	e1822003 	orr	r2, r2, r3                                    
a0006efc:	85d73003 	ldrbhi	r3, [r7, #3]                               
a0006f00:	93a03020 	movls	r3, #32                                     
a0006f04:	e1823003 	orr	r3, r2, r3                                    
a0006f08:	e586300c 	str	r3, [r6, #12]                                 
      ((3 <  length) ? s[ 3 ] : ' ')                                  
    );                                                                
                                                                      
  }                                                                   
                                                                      
  return true;                                                        
a0006f0c:	e3a00001 	mov	r0, #1                                        
a0006f10:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
  if ( information->is_string ) {                                     
    char *d;                                                          
                                                                      
    d = _Workspace_Allocate( length + 1 );                            
    if ( !d )                                                         
      return false;                                                   
a0006f14:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
    );                                                                
                                                                      
  }                                                                   
                                                                      
  return true;                                                        
}                                                                     
a0006f18:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

a0005ef8 <_POSIX_Condition_variables_Wait_support>: pthread_cond_t *cond, pthread_mutex_t *mutex, Watchdog_Interval timeout, bool already_timedout ) {
a0005ef8:	e92d45f1 	push	{r0, r4, r5, r6, r7, r8, sl, lr}             
a0005efc:	e1a05000 	mov	r5, r0                                        
a0005f00:	e1a04001 	mov	r4, r1                                        
  register POSIX_Condition_variables_Control *the_cond;               
  Objects_Locations                           location;               
  int                                         status;                 
  int                                         mutex_status;           
                                                                      
  if ( !_POSIX_Mutex_Get( mutex, &location ) ) {                      
a0005f04:	e1a00001 	mov	r0, r1                                        
a0005f08:	e1a0100d 	mov	r1, sp                                        
  pthread_cond_t            *cond,                                    
  pthread_mutex_t           *mutex,                                   
  Watchdog_Interval          timeout,                                 
  bool                       already_timedout                         
)                                                                     
{                                                                     
a0005f0c:	e1a07002 	mov	r7, r2                                        
a0005f10:	e20380ff 	and	r8, r3, #255	; 0xff                           
  register POSIX_Condition_variables_Control *the_cond;               
  Objects_Locations                           location;               
  int                                         status;                 
  int                                         mutex_status;           
                                                                      
  if ( !_POSIX_Mutex_Get( mutex, &location ) ) {                      
a0005f14:	eb000057 	bl	a0006078 <_POSIX_Mutex_Get>                    
a0005f18:	e3500000 	cmp	r0, #0                                        
a0005f1c:	e1a0600d 	mov	r6, sp                                        
a0005f20:	0a000032 	beq	a0005ff0 <_POSIX_Condition_variables_Wait_support+0xf8>
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Unnest_dispatch( void )             
{                                                                     
  RTEMS_COMPILER_MEMORY_BARRIER();                                    
  _Thread_Dispatch_disable_level -= 1;                                
a0005f24:	e59f30d0 	ldr	r3, [pc, #208]	; a0005ffc <_POSIX_Condition_variables_Wait_support+0x104>
     return EINVAL;                                                   
  }                                                                   
                                                                      
  _Thread_Unnest_dispatch();                                          
                                                                      
  the_cond = _POSIX_Condition_variables_Get( cond, &location );       
a0005f28:	e1a00005 	mov	r0, r5                                        
a0005f2c:	e1a0100d 	mov	r1, sp                                        
a0005f30:	e5932000 	ldr	r2, [r3]                                      
a0005f34:	e2422001 	sub	r2, r2, #1                                    
a0005f38:	e5832000 	str	r2, [r3]                                      
a0005f3c:	ebffff79 	bl	a0005d28 <_POSIX_Condition_variables_Get>      
  switch ( location ) {                                               
a0005f40:	e59d3000 	ldr	r3, [sp]                                      
     return EINVAL;                                                   
  }                                                                   
                                                                      
  _Thread_Unnest_dispatch();                                          
                                                                      
  the_cond = _POSIX_Condition_variables_Get( cond, &location );       
a0005f44:	e1a0a000 	mov	sl, r0                                        
  switch ( location ) {                                               
a0005f48:	e3530000 	cmp	r3, #0                                        
a0005f4c:	1a000027 	bne	a0005ff0 <_POSIX_Condition_variables_Wait_support+0xf8>
                                                                      
    case OBJECTS_LOCAL:                                               
                                                                      
      if ( the_cond->Mutex && ( the_cond->Mutex != *mutex ) ) {       
a0005f50:	e5903014 	ldr	r3, [r0, #20]                                 
a0005f54:	e3530000 	cmp	r3, #0                                        
a0005f58:	0a000004 	beq	a0005f70 <_POSIX_Condition_variables_Wait_support+0x78>
a0005f5c:	e5942000 	ldr	r2, [r4]                                      
a0005f60:	e1530002 	cmp	r3, r2                                        
a0005f64:	0a000001 	beq	a0005f70 <_POSIX_Condition_variables_Wait_support+0x78>
        _Thread_Enable_dispatch();                                    
a0005f68:	eb000bf2 	bl	a0008f38 <_Thread_Enable_dispatch>             
a0005f6c:	ea00001f 	b	a0005ff0 <_POSIX_Condition_variables_Wait_support+0xf8>
        return EINVAL;                                                
      }                                                               
                                                                      
      (void) pthread_mutex_unlock( mutex );                           
a0005f70:	e1a00004 	mov	r0, r4                                        
a0005f74:	eb0000e5 	bl	a0006310 <pthread_mutex_unlock>                
        _Thread_Enable_dispatch();                                    
        return EINVAL;                                                
      }                                                               
*/                                                                    
                                                                      
      if ( !already_timedout ) {                                      
a0005f78:	e3580000 	cmp	r8, #0                                        
a0005f7c:	1a000014 	bne	a0005fd4 <_POSIX_Condition_variables_Wait_support+0xdc>
        the_cond->Mutex = *mutex;                                     
a0005f80:	e5943000 	ldr	r3, [r4]                                      
                                                                      
        _Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
        _Thread_Executing->Wait.return_code = 0;                      
a0005f84:	e59f6074 	ldr	r6, [pc, #116]	; a0006000 <_POSIX_Condition_variables_Wait_support+0x108>
        _Thread_Executing->Wait.queue       = &the_cond->Wait_queue;  
a0005f88:	e28a0018 	add	r0, sl, #24                                   
        return EINVAL;                                                
      }                                                               
*/                                                                    
                                                                      
      if ( !already_timedout ) {                                      
        the_cond->Mutex = *mutex;                                     
a0005f8c:	e58a3014 	str	r3, [sl, #20]                                 
                                                                      
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;
a0005f90:	e3a03001 	mov	r3, #1                                        
a0005f94:	e58a3048 	str	r3, [sl, #72]	; 0x48                          
                                                                      
        _Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
        _Thread_Executing->Wait.return_code = 0;                      
a0005f98:	e5963004 	ldr	r3, [r6, #4]                                  
        _Thread_Executing->Wait.queue       = &the_cond->Wait_queue;  
        _Thread_Executing->Wait.id          = *cond;                  
                                                                      
        _Thread_queue_Enqueue( &the_cond->Wait_queue, timeout );      
a0005f9c:	e1a01007 	mov	r1, r7                                        
                                                                      
      if ( !already_timedout ) {                                      
        the_cond->Mutex = *mutex;                                     
                                                                      
        _Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
        _Thread_Executing->Wait.return_code = 0;                      
a0005fa0:	e5838034 	str	r8, [r3, #52]	; 0x34                          
        _Thread_Executing->Wait.queue       = &the_cond->Wait_queue;  
        _Thread_Executing->Wait.id          = *cond;                  
a0005fa4:	e5952000 	ldr	r2, [r5]                                      
      if ( !already_timedout ) {                                      
        the_cond->Mutex = *mutex;                                     
                                                                      
        _Thread_queue_Enter_critical_section( &the_cond->Wait_queue );
        _Thread_Executing->Wait.return_code = 0;                      
        _Thread_Executing->Wait.queue       = &the_cond->Wait_queue;  
a0005fa8:	e5830044 	str	r0, [r3, #68]	; 0x44                          
        _Thread_Executing->Wait.id          = *cond;                  
a0005fac:	e5832020 	str	r2, [r3, #32]                                 
                                                                      
        _Thread_queue_Enqueue( &the_cond->Wait_queue, timeout );      
a0005fb0:	e59f204c 	ldr	r2, [pc, #76]	; a0006004 <_POSIX_Condition_variables_Wait_support+0x10c>
a0005fb4:	eb000d14 	bl	a000940c <_Thread_queue_Enqueue_with_handler>  
                                                                      
        _Thread_Enable_dispatch();                                    
a0005fb8:	eb000bde 	bl	a0008f38 <_Thread_Enable_dispatch>             
        /*                                                            
         *  Switch ourself out because we blocked as a result of the  
         *  _Thread_queue_Enqueue.                                    
         */                                                           
                                                                      
        status = _Thread_Executing->Wait.return_code;                 
a0005fbc:	e5963004 	ldr	r3, [r6, #4]                                  
a0005fc0:	e5935034 	ldr	r5, [r3, #52]	; 0x34                          
        if ( status && status != ETIMEDOUT )                          
a0005fc4:	e3550074 	cmp	r5, #116	; 0x74                               
a0005fc8:	13550000 	cmpne	r5, #0                                      
a0005fcc:	0a000002 	beq	a0005fdc <_POSIX_Condition_variables_Wait_support+0xe4>
a0005fd0:	ea000007 	b	a0005ff4 <_POSIX_Condition_variables_Wait_support+0xfc><== NOT EXECUTED
          return status;                                              
                                                                      
      } else {                                                        
        _Thread_Enable_dispatch();                                    
a0005fd4:	eb000bd7 	bl	a0008f38 <_Thread_Enable_dispatch>             
        status = ETIMEDOUT;                                           
a0005fd8:	e3a05074 	mov	r5, #116	; 0x74                               
                                                                      
      /*                                                              
       *  When we get here the dispatch disable level is 0.           
       */                                                             
                                                                      
      mutex_status = pthread_mutex_lock( mutex );                     
a0005fdc:	e1a00004 	mov	r0, r4                                        
a0005fe0:	eb0000ab 	bl	a0006294 <pthread_mutex_lock>                  
      if ( mutex_status )                                             
        return EINVAL;                                                
a0005fe4:	e3500000 	cmp	r0, #0                                        
a0005fe8:	13a05016 	movne	r5, #22                                     
a0005fec:	ea000000 	b	a0005ff4 <_POSIX_Condition_variables_Wait_support+0xfc>
#endif                                                                
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return EINVAL;                                                      
a0005ff0:	e3a05016 	mov	r5, #22                                       
}                                                                     
a0005ff4:	e1a00005 	mov	r0, r5                                        
a0005ff8:	e8bd85f8 	pop	{r3, r4, r5, r6, r7, r8, sl, pc}              
                                                                      

a0005e9c <_TOD_Validate>: { uint32_t days_in_month; uint32_t ticks_per_second; ticks_per_second = TOD_MICROSECONDS_PER_SECOND / rtems_configuration_get_microseconds_per_tick();
a0005e9c:	e59f30b4 	ldr	r3, [pc, #180]	; a0005f58 <_TOD_Validate+0xbc>
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
  const rtems_time_of_day *the_tod                                    
)                                                                     
{                                                                     
a0005ea0:	e92d4010 	push	{r4, lr}                                     
  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)                                  ||                  
a0005ea4:	e2504000 	subs	r4, r0, #0                                   
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
	    rtems_configuration_get_microseconds_per_tick();                 
a0005ea8:	e593100c 	ldr	r1, [r3, #12]                                 
  if ((!the_tod)                                  ||                  
a0005eac:	0a000021 	beq	a0005f38 <_TOD_Validate+0x9c>                 
)                                                                     
{                                                                     
  uint32_t   days_in_month;                                           
  uint32_t   ticks_per_second;                                        
                                                                      
  ticks_per_second = TOD_MICROSECONDS_PER_SECOND /                    
a0005eb0:	e59f00a4 	ldr	r0, [pc, #164]	; a0005f5c <_TOD_Validate+0xc0>
a0005eb4:	eb0046a0 	bl	a001793c <__aeabi_uidiv>                       
	    rtems_configuration_get_microseconds_per_tick();                 
  if ((!the_tod)                                  ||                  
a0005eb8:	e5943018 	ldr	r3, [r4, #24]                                 
a0005ebc:	e1530000 	cmp	r3, r0                                        
a0005ec0:	2a000020 	bcs	a0005f48 <_TOD_Validate+0xac>                 
      (the_tod->ticks  >= ticks_per_second)       ||                  
a0005ec4:	e5943014 	ldr	r3, [r4, #20]                                 
a0005ec8:	e353003b 	cmp	r3, #59	; 0x3b                                
a0005ecc:	8a00001d 	bhi	a0005f48 <_TOD_Validate+0xac>                 
      (the_tod->second >= TOD_SECONDS_PER_MINUTE) ||                  
a0005ed0:	e5943010 	ldr	r3, [r4, #16]                                 
a0005ed4:	e353003b 	cmp	r3, #59	; 0x3b                                
a0005ed8:	8a00001a 	bhi	a0005f48 <_TOD_Validate+0xac>                 
      (the_tod->minute >= TOD_MINUTES_PER_HOUR)   ||                  
a0005edc:	e594300c 	ldr	r3, [r4, #12]                                 
a0005ee0:	e3530017 	cmp	r3, #23                                       
a0005ee4:	8a000017 	bhi	a0005f48 <_TOD_Validate+0xac>                 
      (the_tod->hour   >= TOD_HOURS_PER_DAY)      ||                  
      (the_tod->month  == 0)                      ||                  
a0005ee8:	e5943004 	ldr	r3, [r4, #4]                                  
	    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)      ||                  
a0005eec:	e3530000 	cmp	r3, #0                                        
a0005ef0:	0a000012 	beq	a0005f40 <_TOD_Validate+0xa4>                 
      (the_tod->month  == 0)                      ||                  
a0005ef4:	e353000c 	cmp	r3, #12                                       
a0005ef8:	8a000012 	bhi	a0005f48 <_TOD_Validate+0xac>                 
      (the_tod->month  >  TOD_MONTHS_PER_YEAR)    ||                  
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
a0005efc:	e5942000 	ldr	r2, [r4]                                      
      (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)    ||                  
a0005f00:	e59f1058 	ldr	r1, [pc, #88]	; a0005f60 <_TOD_Validate+0xc4> 
a0005f04:	e1520001 	cmp	r2, r1                                        
a0005f08:	9a000010 	bls	a0005f50 <_TOD_Validate+0xb4>                 
      (the_tod->year   <  TOD_BASE_YEAR)          ||                  
      (the_tod->day    == 0) )                                        
a0005f0c:	e5940008 	ldr	r0, [r4, #8]                                  
      (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)          ||                  
a0005f10:	e3500000 	cmp	r0, #0                                        
a0005f14:	0a00000e 	beq	a0005f54 <_TOD_Validate+0xb8>                 
      (the_tod->day    == 0) )                                        
     return false;                                                    
                                                                      
  if ( (the_tod->year % 4) == 0 )                                     
a0005f18:	e3120003 	tst	r2, #3                                        
a0005f1c:	e59f2040 	ldr	r2, [pc, #64]	; a0005f64 <_TOD_Validate+0xc8> 
    days_in_month = _TOD_Days_per_month[ 1 ][ the_tod->month ];       
a0005f20:	0283300d 	addeq	r3, r3, #13                                 
  else                                                                
    days_in_month = _TOD_Days_per_month[ 0 ][ the_tod->month ];       
a0005f24:	e7924103 	ldr	r4, [r2, r3, lsl #2]                          
 *    false - if the the_tod is invalid                               
 *                                                                    
 *  NOTE: This routine only works for leap-years through 2099.        
 */                                                                   
                                                                      
bool _TOD_Validate(                                                   
a0005f28:	e1500004 	cmp	r0, r4                                        
a0005f2c:	83a00000 	movhi	r0, #0                                      
a0005f30:	93a00001 	movls	r0, #1                                      
a0005f34:	e8bd8010 	pop	{r4, pc}                                      
      (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;                                                    
a0005f38:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
a0005f3c:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
a0005f40:	e1a00003 	mov	r0, r3                                        <== NOT EXECUTED
a0005f44:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED
a0005f48:	e3a00000 	mov	r0, #0                                        
a0005f4c:	e8bd8010 	pop	{r4, pc}                                      
a0005f50:	e3a00000 	mov	r0, #0                                        
                                                                      
  if ( the_tod->day > days_in_month )                                 
    return false;                                                     
                                                                      
  return true;                                                        
}                                                                     
a0005f54:	e8bd8010 	pop	{r4, pc}                                      
                                                                      

a0007430 <_Thread_queue_Enqueue_priority>:
a0007430:	e281303c 	add	r3, r1, #60	; 0x3c                            
  Priority_Control     priority;                                      
  States_Control       block_state;                                   
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
a0007434:	e591c014 	ldr	ip, [r1, #20]                                 
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
a0007438:	e5813038 	str	r3, [r1, #56]	; 0x38                          
  the_chain->permanent_null = NULL;                                   
a000743c:	e3a03000 	mov	r3, #0                                        
a0007440:	e581303c 	str	r3, [r1, #60]	; 0x3c                          
  Chain_Node          *previous_node;                                 
  Chain_Node          *search_node;                                   
  Priority_Control     priority;                                      
  States_Control       block_state;                                   
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
a0007444:	e2813038 	add	r3, r1, #56	; 0x38                            
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (     
  Thread_queue_Control *the_thread_queue,                             
  Thread_Control       *the_thread,                                   
  ISR_Level            *level_p                                       
)                                                                     
{                                                                     
a0007448:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
  the_chain->last           = _Chain_Head(the_chain);                 
a000744c:	e5813040 	str	r3, [r1, #64]	; 0x40                          
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
a0007450:	e3a0400c 	mov	r4, #12                                       
                                                                      
RTEMS_INLINE_ROUTINE uint32_t   _Thread_queue_Header_number (         
  Priority_Control the_priority                                       
)                                                                     
{                                                                     
  return (the_priority / TASK_QUEUE_DATA_PRIORITIES_PER_HEADER);      
a0007454:	e1a0332c 	lsr	r3, ip, #6                                    
a0007458:	e0030394 	mul	r3, r4, r3                                    
  block_state  = the_thread_queue->state;                             
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
a000745c:	e31c0020 	tst	ip, #32                                       
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
a0007460:	e0807003 	add	r7, r0, r3                                    
  block_state  = the_thread_queue->state;                             
a0007464:	e5908038 	ldr	r8, [r0, #56]	; 0x38                          
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
a0007468:	159fa15c 	ldrne	sl, [pc, #348]	; a00075cc <_Thread_queue_Enqueue_priority+0x19c>
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->last;                    
a000746c:	11a0b007 	movne	fp, r7                                      
  priority     = the_thread->current_priority;                        
  header_index = _Thread_queue_Header_number( priority );             
  header       = &the_thread_queue->Queues.Priority[ header_index ];  
  block_state  = the_thread_queue->state;                             
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
a0007470:	1a000024 	bne	a0007508 <_Thread_queue_Enqueue_priority+0xd8>
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
a0007474:	e2833004 	add	r3, r3, #4                                    
a0007478:	e080a003 	add	sl, r0, r3                                    
static inline uint32_t arm_interrupt_disable( void )                  
{                                                                     
  uint32_t arm_switch_reg;                                            
  uint32_t level;                                                     
                                                                      
  asm volatile (                                                      
a000747c:	e10f4000 	mrs	r4, CPSR                                      
a0007480:	e3843080 	orr	r3, r4, #128	; 0x80                           
a0007484:	e129f003 	msr	CPSR_fc, r3                                   
a0007488:	e1a05004 	mov	r5, r4                                        
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
a000748c:	e3e06000 	mvn	r6, #0                                        
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->first;                   
a0007490:	e5973000 	ldr	r3, [r7]                                      
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
a0007494:	ea00000b 	b	a00074c8 <_Thread_queue_Enqueue_priority+0x98>  
    search_priority = search_thread->current_priority;                
a0007498:	e5936014 	ldr	r6, [r3, #20]                                 
    if ( priority <= search_priority )                                
a000749c:	e15c0006 	cmp	ip, r6                                        
a00074a0:	9a00000a 	bls	a00074d0 <_Thread_queue_Enqueue_priority+0xa0>
                                                                      
static inline void arm_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  asm volatile (                                                      
a00074a4:	e10f9000 	mrs	r9, CPSR                                      
a00074a8:	e129f004 	msr	CPSR_fc, r4                                   
a00074ac:	e129f009 	msr	CPSR_fc, r9                                   
RTEMS_INLINE_ROUTINE bool _States_Are_set (                           
  States_Control the_states,                                          
  States_Control mask                                                 
)                                                                     
{                                                                     
   return ( (the_states & mask) != STATES_READY);                     
a00074b0:	e5939010 	ldr	r9, [r3, #16]                                 
    search_priority = search_thread->current_priority;                
    if ( priority <= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
a00074b4:	e1180009 	tst	r8, r9                                        
a00074b8:	1a000001 	bne	a00074c4 <_Thread_queue_Enqueue_priority+0x94>
                                                                      
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  asm volatile (                                                      
a00074bc:	e129f004 	msr	CPSR_fc, r4                                   
a00074c0:	eaffffed 	b	a000747c <_Thread_queue_Enqueue_priority+0x4c>  
      _ISR_Enable( level );                                           
      goto restart_forward_search;                                    
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
a00074c4:	e5933000 	ldr	r3, [r3]                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->first;                   
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
a00074c8:	e153000a 	cmp	r3, sl                                        
a00074cc:	1afffff1 	bne	a0007498 <_Thread_queue_Enqueue_priority+0x68>
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
a00074d0:	e5907030 	ldr	r7, [r0, #48]	; 0x30                          
a00074d4:	e3570001 	cmp	r7, #1                                        
a00074d8:	1a000038 	bne	a00075c0 <_Thread_queue_Enqueue_priority+0x190>
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
a00074dc:	e3a02000 	mov	r2, #0                                        
                                                                      
  if ( priority == search_priority )                                  
a00074e0:	e15c0006 	cmp	ip, r6                                        
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
a00074e4:	e5802030 	str	r2, [r0, #48]	; 0x30                          
                                                                      
  if ( priority == search_priority )                                  
a00074e8:	0a00002a 	beq	a0007598 <_Thread_queue_Enqueue_priority+0x168>
    goto equal_priority;                                              
                                                                      
  search_node   = (Chain_Node *) search_thread;                       
  previous_node = search_node->previous;                              
a00074ec:	e5932004 	ldr	r2, [r3, #4]                                  
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
a00074f0:	e5813000 	str	r3, [r1]                                      
  the_node->previous     = previous_node;                             
a00074f4:	e5812004 	str	r2, [r1, #4]                                  
  previous_node->next    = the_node;                                  
a00074f8:	e5821000 	str	r1, [r2]                                      
  search_node->previous  = the_node;                                  
a00074fc:	e5831004 	str	r1, [r3, #4]                                  
  the_thread->Wait.queue = the_thread_queue;                          
a0007500:	e5810044 	str	r0, [r1, #68]	; 0x44                          
  _ISR_Enable( level );                                               
a0007504:	ea000021 	b	a0007590 <_Thread_queue_Enqueue_priority+0x160> 
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
a0007508:	e5da6000 	ldrb	r6, [sl]                                     
a000750c:	e2866001 	add	r6, r6, #1                                    
static inline uint32_t arm_interrupt_disable( void )                  
{                                                                     
  uint32_t arm_switch_reg;                                            
  uint32_t level;                                                     
                                                                      
  asm volatile (                                                      
a0007510:	e10f4000 	mrs	r4, CPSR                                      
a0007514:	e3843080 	orr	r3, r4, #128	; 0x80                           
a0007518:	e129f003 	msr	CPSR_fc, r3                                   
a000751c:	e1a05004 	mov	r5, r4                                        
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->last;                    
a0007520:	e59b3008 	ldr	r3, [fp, #8]                                  
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
a0007524:	ea00000b 	b	a0007558 <_Thread_queue_Enqueue_priority+0x128> 
    search_priority = search_thread->current_priority;                
a0007528:	e5936014 	ldr	r6, [r3, #20]                                 
    if ( priority >= search_priority )                                
a000752c:	e15c0006 	cmp	ip, r6                                        
a0007530:	2a00000a 	bcs	a0007560 <_Thread_queue_Enqueue_priority+0x130>
                                                                      
static inline void arm_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t arm_switch_reg;                                            
                                                                      
  asm volatile (                                                      
a0007534:	e10f9000 	mrs	r9, CPSR                                      
a0007538:	e129f004 	msr	CPSR_fc, r4                                   
a000753c:	e129f009 	msr	CPSR_fc, r9                                   
a0007540:	e5939010 	ldr	r9, [r3, #16]                                 
    search_priority = search_thread->current_priority;                
    if ( priority >= search_priority )                                
      break;                                                          
#endif                                                                
    _ISR_Flash( level );                                              
    if ( !_States_Are_set( search_thread->current_state, block_state) ) {
a0007544:	e1180009 	tst	r8, r9                                        
a0007548:	1a000001 	bne	a0007554 <_Thread_queue_Enqueue_priority+0x124>
                                                                      
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  asm volatile (                                                      
a000754c:	e129f004 	msr	CPSR_fc, r4                                   <== NOT EXECUTED
a0007550:	eaffffec 	b	a0007508 <_Thread_queue_Enqueue_priority+0xd8>  <== NOT EXECUTED
      _ISR_Enable( level );                                           
      goto restart_reverse_search;                                    
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
a0007554:	e5933004 	ldr	r3, [r3, #4]                                  
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->last;                    
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
a0007558:	e1530007 	cmp	r3, r7                                        
a000755c:	1afffff1 	bne	a0007528 <_Thread_queue_Enqueue_priority+0xf8>
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
a0007560:	e5907030 	ldr	r7, [r0, #48]	; 0x30                          
a0007564:	e3570001 	cmp	r7, #1                                        
a0007568:	1a000014 	bne	a00075c0 <_Thread_queue_Enqueue_priority+0x190>
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
a000756c:	e3a02000 	mov	r2, #0                                        
                                                                      
  if ( priority == search_priority )                                  
a0007570:	e15c0006 	cmp	ip, r6                                        
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
a0007574:	e5802030 	str	r2, [r0, #48]	; 0x30                          
                                                                      
  if ( priority == search_priority )                                  
a0007578:	0a000006 	beq	a0007598 <_Thread_queue_Enqueue_priority+0x168>
    goto equal_priority;                                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
a000757c:	e5932000 	ldr	r2, [r3]                                      
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
a0007580:	e881000c 	stm	r1, {r2, r3}                                  
  search_node->next       = the_node;                                 
  next_node->previous    = the_node;                                  
a0007584:	e5821004 	str	r1, [r2, #4]                                  
  next_node   = search_node->next;                                    
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
a0007588:	e5831000 	str	r1, [r3]                                      
  next_node->previous    = the_node;                                  
  the_thread->Wait.queue = the_thread_queue;                          
a000758c:	e5810044 	str	r0, [r1, #68]	; 0x44                          
a0007590:	e129f004 	msr	CPSR_fc, r4                                   
a0007594:	ea000007 	b	a00075b8 <_Thread_queue_Enqueue_priority+0x188> 
a0007598:	e283303c 	add	r3, r3, #60	; 0x3c                            
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
equal_priority:               /* add at end of priority group */      
  search_node   = _Chain_Tail( &search_thread->Wait.Block2n );        
  previous_node = search_node->previous;                              
a000759c:	e5932004 	ldr	r2, [r3, #4]                                  
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
a00075a0:	e5813000 	str	r3, [r1]                                      
  the_node->previous     = previous_node;                             
a00075a4:	e5812004 	str	r2, [r1, #4]                                  
  previous_node->next    = the_node;                                  
a00075a8:	e5821000 	str	r1, [r2]                                      
  search_node->previous  = the_node;                                  
a00075ac:	e5831004 	str	r1, [r3, #4]                                  
  the_thread->Wait.queue = the_thread_queue;                          
a00075b0:	e5810044 	str	r0, [r1, #68]	; 0x44                          
a00075b4:	e129f005 	msr	CPSR_fc, r5                                   
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
a00075b8:	e3a00001 	mov	r0, #1                                        
a00075bc:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
   *  For example, the blocking thread could have been given          
   *  the mutex by an ISR or timed out.                               
   *                                                                  
   *  WARNING! Returning with interrupts disabled!                    
   */                                                                 
  *level_p = level;                                                   
a00075c0:	e5825000 	str	r5, [r2]                                      
  return the_thread_queue->sync_state;                                
a00075c4:	e5900030 	ldr	r0, [r0, #48]	; 0x30                          
}                                                                     
a00075c8:	e8bd8ff0 	pop	{r4, r5, r6, r7, r8, r9, sl, fp, pc}          
                                                                      

a000aeac <_Thread_queue_Extract_priority_helper>: void _Thread_queue_Extract_priority_helper( Thread_queue_Control *the_thread_queue __attribute__((unused)), Thread_Control *the_thread, bool requeuing ) {
a000aeac:	e92d4070 	push	{r4, r5, r6, lr}                             
a000aeb0:	e20220ff 	and	r2, r2, #255	; 0xff                           
a000aeb4:	e1a04001 	mov	r4, r1                                        
static inline uint32_t arm_interrupt_disable( void )                  
{                                                                     
  uint32_t arm_switch_reg;                                            
  uint32_t level;                                                     
                                                                      
  asm volatile (                                                      
a000aeb8:	e10f1000 	mrs	r1, CPSR                                      
a000aebc:	e3813080 	orr	r3, r1, #128	; 0x80                           
a000aec0:	e129f003 	msr	CPSR_fc, r3                                   
 */                                                                   
RTEMS_INLINE_ROUTINE bool _States_Is_waiting_on_thread_queue (        
  States_Control the_states                                           
)                                                                     
{                                                                     
   return (the_states & STATES_WAITING_ON_THREAD_QUEUE);              
a000aec4:	e59f30a8 	ldr	r3, [pc, #168]	; a000af74 <_Thread_queue_Extract_priority_helper+0xc8>
a000aec8:	e5940010 	ldr	r0, [r4, #16]                                 
a000aecc:	e0003003 	and	r3, r0, r3                                    
  Chain_Node     *new_second_node;                                    
  Chain_Node     *last_node;                                          
                                                                      
  the_node = (Chain_Node *) the_thread;                               
  _ISR_Disable( level );                                              
  if ( !_States_Is_waiting_on_thread_queue( the_thread->current_state ) ) {
a000aed0:	e3530000 	cmp	r3, #0                                        
a000aed4:	1a000000 	bne	a000aedc <_Thread_queue_Extract_priority_helper+0x30>
    _ISR_Enable( level );                                             
a000aed8:	ea000015 	b	a000af34 <_Thread_queue_Extract_priority_helper+0x88>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return (the_chain->first == _Chain_Tail(the_chain));                
a000aedc:	e5943038 	ldr	r3, [r4, #56]	; 0x38                          
                                                                      
  /*                                                                  
   *  The thread was actually waiting on a thread queue so let's remove it.
   */                                                                 
                                                                      
  next_node     = the_node->next;                                     
a000aee0:	e8941001 	ldm	r4, {r0, ip}                                  
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
a000aee4:	e284503c 	add	r5, r4, #60	; 0x3c                            
  previous_node = the_node->previous;                                 
                                                                      
  if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {              
a000aee8:	e1530005 	cmp	r3, r5                                        
                                                                      
      new_first_thread->Wait.Block2n.last = last_node;                
      last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n );
    }                                                                 
  } else {                                                            
    previous_node->next = next_node;                                  
a000aeec:	058c0000 	streq	r0, [ip]                                    
    next_node->previous = previous_node;                              
a000aef0:	0580c004 	streq	ip, [r0, #4]                                
   */                                                                 
                                                                      
  next_node     = the_node->next;                                     
  previous_node = the_node->previous;                                 
                                                                      
  if ( !_Chain_Is_empty( &the_thread->Wait.Block2n ) ) {              
a000aef4:	0a00000c 	beq	a000af2c <_Thread_queue_Extract_priority_helper+0x80>
    new_first_node   = the_thread->Wait.Block2n.first;                
    new_first_thread = (Thread_Control *) new_first_node;             
    last_node        = the_thread->Wait.Block2n.last;                 
a000aef8:	e5945040 	ldr	r5, [r4, #64]	; 0x40                          
    new_second_node  = new_first_node->next;                          
a000aefc:	e5936000 	ldr	r6, [r3]                                      
                                                                      
    previous_node->next      = new_first_node;                        
    next_node->previous      = new_first_node;                        
a000af00:	e5803004 	str	r3, [r0, #4]                                  
    new_first_node->next     = next_node;                             
    new_first_node->previous = previous_node;                         
                                                                      
    if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {   
a000af04:	e1530005 	cmp	r3, r5                                        
    new_first_node   = the_thread->Wait.Block2n.first;                
    new_first_thread = (Thread_Control *) new_first_node;             
    last_node        = the_thread->Wait.Block2n.last;                 
    new_second_node  = new_first_node->next;                          
                                                                      
    previous_node->next      = new_first_node;                        
a000af08:	e58c3000 	str	r3, [ip]                                      
    next_node->previous      = new_first_node;                        
    new_first_node->next     = next_node;                             
    new_first_node->previous = previous_node;                         
a000af0c:	e8831001 	stm	r3, {r0, ip}                                  
                                                                      
    if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {   
a000af10:	0a000005 	beq	a000af2c <_Thread_queue_Extract_priority_helper+0x80>
                                        /* > two threads on 2-n */    
      new_second_node->previous =                                     
                _Chain_Head( &new_first_thread->Wait.Block2n );       
a000af14:	e2830038 	add	r0, r3, #56	; 0x38                            
    new_first_node->next     = next_node;                             
    new_first_node->previous = previous_node;                         
                                                                      
    if ( !_Chain_Has_only_one_node( &the_thread->Wait.Block2n ) ) {   
                                        /* > two threads on 2-n */    
      new_second_node->previous =                                     
a000af18:	e5860004 	str	r0, [r6, #4]                                  
                _Chain_Head( &new_first_thread->Wait.Block2n );       
      new_first_thread->Wait.Block2n.first = new_second_node;         
a000af1c:	e5836038 	str	r6, [r3, #56]	; 0x38                          
                                                                      
      new_first_thread->Wait.Block2n.last = last_node;                
a000af20:	e5835040 	str	r5, [r3, #64]	; 0x40                          
a000af24:	e283303c 	add	r3, r3, #60	; 0x3c                            
      last_node->next = _Chain_Tail( &new_first_thread->Wait.Block2n );
a000af28:	e5853000 	str	r3, [r5]                                      
                                                                      
  /*                                                                  
   *  If we are not supposed to touch timers or the thread's state, return.
   */                                                                 
                                                                      
  if ( requeuing ) {                                                  
a000af2c:	e3520000 	cmp	r2, #0                                        
a000af30:	0a000001 	beq	a000af3c <_Thread_queue_Extract_priority_helper+0x90>
                                                                      
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  asm volatile (                                                      
a000af34:	e129f001 	msr	CPSR_fc, r1                                   
a000af38:	e8bd8070 	pop	{r4, r5, r6, pc}                              
    _ISR_Enable( level );                                             
    return;                                                           
  }                                                                   
                                                                      
  if ( !_Watchdog_Is_active( &the_thread->Timer ) ) {                 
a000af3c:	e5943050 	ldr	r3, [r4, #80]	; 0x50                          
a000af40:	e3530002 	cmp	r3, #2                                        
a000af44:	0a000001 	beq	a000af50 <_Thread_queue_Extract_priority_helper+0xa4>
a000af48:	e129f001 	msr	CPSR_fc, r1                                   
a000af4c:	ea000004 	b	a000af64 <_Thread_queue_Extract_priority_helper+0xb8>
a000af50:	e3a03003 	mov	r3, #3                                        <== NOT EXECUTED
a000af54:	e5843050 	str	r3, [r4, #80]	; 0x50                          <== NOT EXECUTED
a000af58:	e129f001 	msr	CPSR_fc, r1                                   <== NOT EXECUTED
    _ISR_Enable( level );                                             
  } else {                                                            
    _Watchdog_Deactivate( &the_thread->Timer );                       
    _ISR_Enable( level );                                             
    (void) _Watchdog_Remove( &the_thread->Timer );                    
a000af5c:	e2840048 	add	r0, r4, #72	; 0x48                            <== NOT EXECUTED
a000af60:	ebfff432 	bl	a0008030 <_Watchdog_Remove>                    <== NOT EXECUTED
a000af64:	e59f100c 	ldr	r1, [pc, #12]	; a000af78 <_Thread_queue_Extract_priority_helper+0xcc>
a000af68:	e1a00004 	mov	r0, r4                                        
                                                                      
#if defined(RTEMS_MULTIPROCESSING)                                    
  if ( !_Objects_Is_local_id( the_thread->Object.id ) )               
    _Thread_MP_Free_proxy( the_thread );                              
#endif                                                                
}                                                                     
a000af6c:	e8bd4070 	pop	{r4, r5, r6, lr}                              
a000af70:	eaffeeec 	b	a0006b28 <_Thread_Clear_state>                  
                                                                      

a00140f0 <_Timer_server_Body>: * @a arg points to the corresponding timer server control block. */ static rtems_task _Timer_server_Body( rtems_task_argument arg ) {
a00140f0:	e92d4ff0 	push	{r4, r5, r6, r7, r8, r9, sl, fp, lr}         
a00140f4:	e24dd018 	sub	sp, sp, #24                                   
a00140f8:	e28db00c 	add	fp, sp, #12                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
  the_chain->permanent_null = NULL;                                   
a00140fc:	e3a03000 	mov	r3, #0                                        
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
a0014100:	e28ba004 	add	sl, fp, #4                                    
a0014104:	e28d7004 	add	r7, sp, #4                                    
a0014108:	e1a04000 	mov	r4, r0                                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
a001410c:	e58da00c 	str	sl, [sp, #12]                                 
  the_chain->permanent_null = NULL;                                   
a0014110:	e58d3010 	str	r3, [sp, #16]                                 
  the_chain->last           = _Chain_Head(the_chain);                 
a0014114:	e58db014 	str	fp, [sp, #20]                                 
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
a0014118:	e1a0500d 	mov	r5, sp                                        
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
a001411c:	e58d7000 	str	r7, [sp]                                      
  the_chain->permanent_null = NULL;                                   
a0014120:	e98d2008 	stmib	sp, {r3, sp}                                
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
a0014124:	e2809030 	add	r9, r0, #48	; 0x30                            
{                                                                     
  /*                                                                  
   *  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;                                    
a0014128:	e584b078 	str	fp, [r4, #120]	; 0x78                         
     /*                                                               
      *  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 ); 
a001412c:	e2848068 	add	r8, r4, #104	; 0x68                           
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
a0014130:	e59f2154 	ldr	r2, [pc, #340]	; a001428c <_Timer_server_Body+0x19c>
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
a0014134:	e1a00009 	mov	r0, r9                                        
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
a0014138:	e5923000 	ldr	r3, [r2]                                      
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
a001413c:	e594103c 	ldr	r1, [r4, #60]	; 0x3c                          
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
a0014140:	e1a02005 	mov	r2, r5                                        
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
a0014144:	e584303c 	str	r3, [r4, #60]	; 0x3c                          
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
a0014148:	e0611003 	rsb	r1, r1, r3                                    
a001414c:	eb0010f6 	bl	a001852c <_Watchdog_Adjust_to_chain>           
static void _Timer_server_Process_tod_watchdogs(                      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
a0014150:	e59f3138 	ldr	r3, [pc, #312]	; a0014290 <_Timer_server_Body+0x1a0>
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
a0014154:	e5942074 	ldr	r2, [r4, #116]	; 0x74                         
static void _Timer_server_Process_tod_watchdogs(                      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
a0014158:	e5936000 	ldr	r6, [r3]                                      
  /*                                                                  
   *  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 ) {                                   
a001415c:	e1560002 	cmp	r6, r2                                        
a0014160:	9a000004 	bls	a0014178 <_Timer_server_Body+0x88>            
    /*                                                                
     *  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 );
a0014164:	e0621006 	rsb	r1, r2, r6                                    
a0014168:	e1a00008 	mov	r0, r8                                        
a001416c:	e1a02005 	mov	r2, r5                                        
a0014170:	eb0010ed 	bl	a001852c <_Watchdog_Adjust_to_chain>           
a0014174:	ea000004 	b	a001418c <_Timer_server_Body+0x9c>              
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
a0014178:	2a000003 	bcs	a001418c <_Timer_server_Body+0x9c>            
     /*                                                               
      *  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 ); 
a001417c:	e1a00008 	mov	r0, r8                                        
a0014180:	e3a01001 	mov	r1, #1                                        
a0014184:	e0662002 	rsb	r2, r6, r2                                    
a0014188:	eb0010bf 	bl	a001848c <_Watchdog_Adjust>                    
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
a001418c:	e5846074 	str	r6, [r4, #116]	; 0x74                         
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
a0014190:	e5940078 	ldr	r0, [r4, #120]	; 0x78                         
a0014194:	eb000297 	bl	a0014bf8 <_Chain_Get>                          
                                                                      
    if ( timer == NULL ) {                                            
a0014198:	e2506000 	subs	r6, r0, #0                                   
a001419c:	0a000009 	beq	a00141c8 <_Timer_server_Body+0xd8>            
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
a00141a0:	e5963038 	ldr	r3, [r6, #56]	; 0x38                          
a00141a4:	e3530001 	cmp	r3, #1                                        
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
a00141a8:	01a00009 	moveq	r0, r9                                      
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
a00141ac:	0a000002 	beq	a00141bc <_Timer_server_Body+0xcc>            
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
a00141b0:	e3530003 	cmp	r3, #3                                        
a00141b4:	1afffff5 	bne	a0014190 <_Timer_server_Body+0xa0>            
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
a00141b8:	e1a00008 	mov	r0, r8                                        
a00141bc:	e2861010 	add	r1, r6, #16                                   
a00141c0:	eb001104 	bl	a00185d8 <_Watchdog_Insert>                    
a00141c4:	eafffff1 	b	a0014190 <_Timer_server_Body+0xa0>              
     *  of zero it will be processed in the next iteration of the timer server
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
a00141c8:	ebffff96 	bl	a0014028 <arm_interrupt_disable>               
    if ( _Chain_Is_empty( insert_chain ) ) {                          
a00141cc:	e59d300c 	ldr	r3, [sp, #12]                                 
a00141d0:	e153000a 	cmp	r3, sl                                        
a00141d4:	1a000006 	bne	a00141f4 <_Timer_server_Body+0x104>           
      ts->insert_chain = NULL;                                        
a00141d8:	e5846078 	str	r6, [r4, #120]	; 0x78                         
a00141dc:	e129f000 	msr	CPSR_fc, r0                                   
  _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 ) ) {                          
a00141e0:	e59d3000 	ldr	r3, [sp]                                      
a00141e4:	e1530007 	cmp	r3, r7                                        
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
    return _Chain_Get_first_unprotected(the_chain);                   
  else                                                                
    return NULL;                                                      
a00141e8:	13a06000 	movne	r6, #0                                      
a00141ec:	1a000002 	bne	a00141fc <_Timer_server_Body+0x10c>           
a00141f0:	ea000013 	b	a0014244 <_Timer_server_Body+0x154>             
a00141f4:	e129f000 	msr	CPSR_fc, r0                                   <== NOT EXECUTED
a00141f8:	eaffffcc 	b	a0014130 <_Timer_server_Body+0x40>              <== 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 );                                        
a00141fc:	ebffff89 	bl	a0014028 <arm_interrupt_disable>               
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return (the_chain->first == _Chain_Tail(the_chain));                
a0014200:	e59d2000 	ldr	r2, [sp]                                      
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
a0014204:	e1520007 	cmp	r2, r7                                        
a0014208:	0a00000b 	beq	a001423c <_Timer_server_Body+0x14c>           
{                                                                     
  Chain_Node  *return_node;                                           
  Chain_Node  *new_first;                                             
                                                                      
  return_node         = the_chain->first;                             
  new_first           = return_node->next;                            
a001420c:	e5923000 	ldr	r3, [r2]                                      
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
a0014210:	e3520000 	cmp	r2, #0                                        
  the_chain->first    = new_first;                                    
a0014214:	e58d3000 	str	r3, [sp]                                      
  new_first->previous = _Chain_Head(the_chain);                       
a0014218:	e5835004 	str	r5, [r3, #4]                                  
a001421c:	0a000006 	beq	a001423c <_Timer_server_Body+0x14c>           
          watchdog->state = WATCHDOG_INACTIVE;                        
a0014220:	e5826008 	str	r6, [r2, #8]                                  
a0014224:	e129f000 	msr	CPSR_fc, r0                                   
        /*                                                            
         *  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 );    
a0014228:	e592301c 	ldr	r3, [r2, #28]                                 
a001422c:	e5920020 	ldr	r0, [r2, #32]                                 
a0014230:	e5921024 	ldr	r1, [r2, #36]	; 0x24                          
a0014234:	e12fff33 	blx	r3                                            
      }                                                               
a0014238:	eaffffef 	b	a00141fc <_Timer_server_Body+0x10c>             
a001423c:	e129f000 	msr	CPSR_fc, r0                                   
a0014240:	eaffffb8 	b	a0014128 <_Timer_server_Body+0x38>              
    } else {                                                          
      ts->active = false;                                             
a0014244:	e3a03000 	mov	r3, #0                                        
a0014248:	e5c4307c 	strb	r3, [r4, #124]	; 0x7c                        
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
a001424c:	ebffff79 	bl	a0014038 <_Thread_Disable_dispatch>            
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
a0014250:	e3a01008 	mov	r1, #8                                        
a0014254:	e5940000 	ldr	r0, [r4]                                      
a0014258:	eb000e3d 	bl	a0017b54 <_Thread_Set_state>                   
        _Timer_server_Reset_interval_system_watchdog( ts );           
a001425c:	e1a00004 	mov	r0, r4                                        
a0014260:	ebffff7a 	bl	a0014050 <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
a0014264:	e1a00004 	mov	r0, r4                                        
a0014268:	ebffff8c 	bl	a00140a0 <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
a001426c:	eb000bb3 	bl	a0017140 <_Thread_Enable_dispatch>             
                                                                      
      ts->active = true;                                              
a0014270:	e3a03001 	mov	r3, #1                                        
a0014274:	e5c4307c 	strb	r3, [r4, #124]	; 0x7c                        
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
a0014278:	e2840008 	add	r0, r4, #8                                    
a001427c:	eb00112b 	bl	a0018730 <_Watchdog_Remove>                    
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
a0014280:	e2840040 	add	r0, r4, #64	; 0x40                            
a0014284:	eb001129 	bl	a0018730 <_Watchdog_Remove>                    
a0014288:	eaffffa6 	b	a0014128 <_Timer_server_Body+0x38>              
                                                                      

a0009718 <pthread_attr_setschedpolicy>: int pthread_attr_setschedpolicy( pthread_attr_t *attr, int policy ) { if ( !attr || !attr->is_initialized )
a0009718:	e3500000 	cmp	r0, #0                                        
a000971c:	0a00000b 	beq	a0009750 <pthread_attr_setschedpolicy+0x38>   
a0009720:	e5903000 	ldr	r3, [r0]                                      
a0009724:	e3530000 	cmp	r3, #0                                        
a0009728:	0a000008 	beq	a0009750 <pthread_attr_setschedpolicy+0x38>   
    return EINVAL;                                                    
                                                                      
  switch ( policy ) {                                                 
a000972c:	e3510004 	cmp	r1, #4                                        
a0009730:	8a000008 	bhi	a0009758 <pthread_attr_setschedpolicy+0x40>   
a0009734:	e3a03001 	mov	r3, #1                                        
a0009738:	e1a03113 	lsl	r3, r3, r1                                    
a000973c:	e3130017 	tst	r3, #23                                       
    case SCHED_OTHER:                                                 
    case SCHED_FIFO:                                                  
    case SCHED_RR:                                                    
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
a0009740:	15801014 	strne	r1, [r0, #20]                               
      return 0;                                                       
a0009744:	13a00000 	movne	r0, #0                                      
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
    return EINVAL;                                                    
                                                                      
  switch ( policy ) {                                                 
a0009748:	112fff1e 	bxne	lr                                           
a000974c:	ea000001 	b	a0009758 <pthread_attr_setschedpolicy+0x40>     <== NOT EXECUTED
  pthread_attr_t  *attr,                                              
  int              policy                                             
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
    return EINVAL;                                                    
a0009750:	e3a00016 	mov	r0, #22                                       
a0009754:	e12fff1e 	bx	lr                                             
    case SCHED_SPORADIC:                                              
      attr->schedpolicy = policy;                                     
      return 0;                                                       
                                                                      
    default:                                                          
      return ENOTSUP;                                                 
a0009758:	e3a00086 	mov	r0, #134	; 0x86                               
  }                                                                   
}                                                                     
a000975c:	e12fff1e 	bx	lr                                             
                                                                      

a0005d8c <pthread_cond_init>: int pthread_cond_init( pthread_cond_t *cond, const pthread_condattr_t *attr ) {
a0005d8c:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
  POSIX_Condition_variables_Control   *the_cond;                      
  const pthread_condattr_t            *the_attr;                      
                                                                      
  if ( attr ) the_attr = attr;                                        
  else        the_attr = &_POSIX_Condition_variables_Default_attributes;
a0005d90:	e59f50a8 	ldr	r5, [pc, #168]	; a0005e40 <pthread_cond_init+0xb4>
a0005d94:	e3510000 	cmp	r1, #0                                        
a0005d98:	11a05001 	movne	r5, r1                                      
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
                                                                      
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
a0005d9c:	e5953004 	ldr	r3, [r5, #4]                                  
                                                                      
int pthread_cond_init(                                                
  pthread_cond_t           *cond,                                     
  const pthread_condattr_t *attr                                      
)                                                                     
{                                                                     
a0005da0:	e1a07000 	mov	r7, r0                                        
                                                                      
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
                                                                      
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
a0005da4:	e3530001 	cmp	r3, #1                                        
a0005da8:	0a000020 	beq	a0005e30 <pthread_cond_init+0xa4>             
    return EINVAL;                                                    
                                                                      
  if ( !the_attr->is_initialized )                                    
a0005dac:	e5953000 	ldr	r3, [r5]                                      
a0005db0:	e3530000 	cmp	r3, #0                                        
a0005db4:	0a00001f 	beq	a0005e38 <pthread_cond_init+0xac>             
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
a0005db8:	e59f3084 	ldr	r3, [pc, #132]	; a0005e44 <pthread_cond_init+0xb8>
a0005dbc:	e5932000 	ldr	r2, [r3]                                      
a0005dc0:	e2822001 	add	r2, r2, #1                                    
a0005dc4:	e5832000 	str	r2, [r3]                                      
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Condition_variables_Control                
  *_POSIX_Condition_variables_Allocate( void )                        
{                                                                     
  return (POSIX_Condition_variables_Control *)                        
    _Objects_Allocate( &_POSIX_Condition_variables_Information );     
a0005dc8:	e59f6078 	ldr	r6, [pc, #120]	; a0005e48 <pthread_cond_init+0xbc>
a0005dcc:	e1a00006 	mov	r0, r6                                        
a0005dd0:	eb00092d 	bl	a000828c <_Objects_Allocate>                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_cond = _POSIX_Condition_variables_Allocate();                   
                                                                      
  if ( !the_cond ) {                                                  
a0005dd4:	e2504000 	subs	r4, r0, #0                                   
a0005dd8:	1a000002 	bne	a0005de8 <pthread_cond_init+0x5c>             
    _Thread_Enable_dispatch();                                        
a0005ddc:	eb000c55 	bl	a0008f38 <_Thread_Enable_dispatch>             
    return ENOMEM;                                                    
a0005de0:	e3a0000c 	mov	r0, #12                                       
a0005de4:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
a0005de8:	e5953004 	ldr	r3, [r5, #4]                                  
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
a0005dec:	e3a05000 	mov	r5, #0                                        
                                                                      
/* XXX some more initialization might need to go here */              
  _Thread_queue_Initialize(                                           
a0005df0:	e2840018 	add	r0, r4, #24                                   
  if ( !the_cond ) {                                                  
    _Thread_Enable_dispatch();                                        
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
a0005df4:	e5843010 	str	r3, [r4, #16]                                 
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
                                                                      
/* XXX some more initialization might need to go here */              
  _Thread_queue_Initialize(                                           
a0005df8:	e1a01005 	mov	r1, r5                                        
a0005dfc:	e3a02b02 	mov	r2, #2048	; 0x800                             
a0005e00:	e3a03074 	mov	r3, #116	; 0x74                               
    return ENOMEM;                                                    
  }                                                                   
                                                                      
  the_cond->process_shared  = the_attr->process_shared;               
                                                                      
  the_cond->Mutex = POSIX_CONDITION_VARIABLES_NO_MUTEX;               
a0005e04:	e5845014 	str	r5, [r4, #20]                                 
                                                                      
/* XXX some more initialization might need to go here */              
  _Thread_queue_Initialize(                                           
a0005e08:	eb000e41 	bl	a0009714 <_Thread_queue_Initialize>            
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
a0005e0c:	e596201c 	ldr	r2, [r6, #28]                                 
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
a0005e10:	e5943008 	ldr	r3, [r4, #8]                                  
a0005e14:	e1d410b8 	ldrh	r1, [r4, #8]                                 
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
a0005e18:	e7824101 	str	r4, [r2, r1, lsl #2]                          
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
a0005e1c:	e584500c 	str	r5, [r4, #12]                                 
    &_POSIX_Condition_variables_Information,                          
    &the_cond->Object,                                                
    0                                                                 
  );                                                                  
                                                                      
  *cond = the_cond->Object.id;                                        
a0005e20:	e5873000 	str	r3, [r7]                                      
                                                                      
  _Thread_Enable_dispatch();                                          
a0005e24:	eb000c43 	bl	a0008f38 <_Thread_Enable_dispatch>             
                                                                      
  return 0;                                                           
a0005e28:	e1a00005 	mov	r0, r5                                        
a0005e2c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
  /*                                                                  
   *  Be careful about attributes when global!!!                      
   */                                                                 
                                                                      
  if ( the_attr->process_shared == PTHREAD_PROCESS_SHARED )           
    return EINVAL;                                                    
a0005e30:	e3a00016 	mov	r0, #22                                       <== NOT EXECUTED
a0005e34:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      
  if ( !the_attr->is_initialized )                                    
    return EINVAL;                                                    
a0005e38:	e3a00016 	mov	r0, #22                                       
  *cond = the_cond->Object.id;                                        
                                                                      
  _Thread_Enable_dispatch();                                          
                                                                      
  return 0;                                                           
}                                                                     
a0005e3c:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
                                                                      

a0004f40 <pthread_key_create>:
a0004f40:	e59f30f4 	ldr	r3, [pc, #244]	; a000503c <pthread_key_create+0xfc>
                                                                      
int pthread_key_create(                                               
  pthread_key_t  *key,                                                
  void          (*destructor)( void * )                               
)                                                                     
{                                                                     
a0004f44:	e92d45f0 	push	{r4, r5, r6, r7, r8, sl, lr}                 
a0004f48:	e5932000 	ldr	r2, [r3]                                      
a0004f4c:	e1a08000 	mov	r8, r0                                        
a0004f50:	e1a05001 	mov	r5, r1                                        
a0004f54:	e2822001 	add	r2, r2, #1                                    
a0004f58:	e5832000 	str	r2, [r3]                                      
 *  the inactive chain of free keys control blocks.                   
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE POSIX_Keys_Control *_POSIX_Keys_Allocate( void ) 
{                                                                     
  return (POSIX_Keys_Control *) _Objects_Allocate( &_POSIX_Keys_Information );
a0004f5c:	e59f00dc 	ldr	r0, [pc, #220]	; a0005040 <pthread_key_create+0x100>
a0004f60:	eb000842 	bl	a0007070 <_Objects_Allocate>                   
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  the_key = _POSIX_Keys_Allocate();                                   
                                                                      
  if ( !the_key ) {                                                   
a0004f64:	e2504000 	subs	r4, r0, #0                                   
a0004f68:	1a000002 	bne	a0004f78 <pthread_key_create+0x38>            
    _Thread_Enable_dispatch();                                        
a0004f6c:	eb000b6a 	bl	a0007d1c <_Thread_Enable_dispatch>             
    return EAGAIN;                                                    
a0004f70:	e3a0000b 	mov	r0, #11                                       
a0004f74:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
  }                                                                   
                                                                      
  the_key->destructor = destructor;                                   
a0004f78:	e59f70c4 	ldr	r7, [pc, #196]	; a0005044 <pthread_key_create+0x104>
a0004f7c:	e5845010 	str	r5, [r4, #16]                                 
a0004f80:	e1a06004 	mov	r6, r4                                        
   *  APIs are optional.                                              
   *                                                                  
   *  NOTE: Currently RTEMS Classic API tasks are always enabled.     
   */                                                                 
                                                                      
  for ( the_api = 1;                                                  
a0004f84:	e3a05001 	mov	r5, #1                                        
        the_api <= OBJECTS_APIS_LAST;                                 
        the_api++ ) {                                                 
                                                                      
    if ( _Objects_Information_table[ the_api ] ) {                    
a0004f88:	e5b73004 	ldr	r3, [r7, #4]!                                 
a0004f8c:	e3530000 	cmp	r3, #0                                        
a0004f90:	0a000019 	beq	a0004ffc <pthread_key_create+0xbc>            
            true,                                                     
            INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY    
          );                                                          
      #endif                                                          
      bytes_to_allocate = sizeof( void * ) *                          
        (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);    
a0004f94:	e5933004 	ldr	r3, [r3, #4]                                  
a0004f98:	e1d3a1b0 	ldrh	sl, [r3, #16]                                
a0004f9c:	e28aa001 	add	sl, sl, #1                                    
            INTERNAL_ERROR_CORE,                                      
            true,                                                     
            INTERNAL_ERROR_IMPLEMENTATION_KEY_CREATE_INCONSISTENCY    
          );                                                          
      #endif                                                          
      bytes_to_allocate = sizeof( void * ) *                          
a0004fa0:	e1a0a10a 	lsl	sl, sl, #2                                    
        (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);    
      table = _Workspace_Allocate( bytes_to_allocate );               
a0004fa4:	e1a0000a 	mov	r0, sl                                        
a0004fa8:	eb001067 	bl	a000914c <_Workspace_Allocate>                 
      if ( !table ) {                                                 
a0004fac:	e2503000 	subs	r3, r0, #0                                   
a0004fb0:	1a00000c 	bne	a0004fe8 <pthread_key_create+0xa8>            
int	_EXFUN(pthread_once,                                              
	(pthread_once_t *__once_control, void (*__init_routine)(void)));     
                                                                      
/* Thread-Specific Data Key Create, P1003.1c/Draft 10, p. 163 */      
                                                                      
int	_EXFUN(pthread_key_create,                                        
a0004fb4:	e2856005 	add	r6, r5, #5                                    
a0004fb8:	e0846106 	add	r6, r4, r6, lsl #2                            
        for ( --the_api;                                              
a0004fbc:	ea000001 	b	a0004fc8 <pthread_key_create+0x88>              
              the_api >= 1;                                           
              the_api-- )                                             
          _Workspace_Free( the_key->Values[ the_api ] );              
a0004fc0:	e5360004 	ldr	r0, [r6, #-4]!                                
a0004fc4:	eb001066 	bl	a0009164 <_Workspace_Free>                     
      #endif                                                          
      bytes_to_allocate = sizeof( void * ) *                          
        (_Objects_Information_table[ the_api ][ 1 ]->maximum + 1);    
      table = _Workspace_Allocate( bytes_to_allocate );               
      if ( !table ) {                                                 
        for ( --the_api;                                              
a0004fc8:	e2555001 	subs	r5, r5, #1                                   
a0004fcc:	1afffffb 	bne	a0004fc0 <pthread_key_create+0x80>            
 */                                                                   
RTEMS_INLINE_ROUTINE void _POSIX_Keys_Free (                          
  POSIX_Keys_Control *the_key                                         
)                                                                     
{                                                                     
  _Objects_Free( &_POSIX_Keys_Information, &the_key->Object );        
a0004fd0:	e59f0068 	ldr	r0, [pc, #104]	; a0005040 <pthread_key_create+0x100>
a0004fd4:	e1a01004 	mov	r1, r4                                        
a0004fd8:	eb0008ed 	bl	a0007394 <_Objects_Free>                       
              the_api >= 1;                                           
              the_api-- )                                             
          _Workspace_Free( the_key->Values[ the_api ] );              
                                                                      
        _POSIX_Keys_Free( the_key );                                  
        _Thread_Enable_dispatch();                                    
a0004fdc:	eb000b4e 	bl	a0007d1c <_Thread_Enable_dispatch>             
        return ENOMEM;                                                
a0004fe0:	e3a0000c 	mov	r0, #12                                       
a0004fe4:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
      }                                                               
                                                                      
      the_key->Values[ the_api ] = table;                             
a0004fe8:	e5863018 	str	r3, [r6, #24]                                 
      memset( table, '\0', bytes_to_allocate );                       
a0004fec:	e3a01000 	mov	r1, #0                                        
a0004ff0:	e1a0200a 	mov	r2, sl                                        
a0004ff4:	eb002483 	bl	a000e208 <memset>                              
a0004ff8:	ea000000 	b	a0005000 <pthread_key_create+0xc0>              
    } else {                                                          
      the_key->Values[ the_api ] = NULL;                              
a0004ffc:	e5863018 	str	r3, [r6, #24]                                 <== NOT EXECUTED
   *  NOTE: Currently RTEMS Classic API tasks are always enabled.     
   */                                                                 
                                                                      
  for ( the_api = 1;                                                  
        the_api <= OBJECTS_APIS_LAST;                                 
        the_api++ ) {                                                 
a0005000:	e2855001 	add	r5, r5, #1                                    
   *  APIs are optional.                                              
   *                                                                  
   *  NOTE: Currently RTEMS Classic API tasks are always enabled.     
   */                                                                 
                                                                      
  for ( the_api = 1;                                                  
a0005004:	e3550004 	cmp	r5, #4                                        
        the_api <= OBJECTS_APIS_LAST;                                 
        the_api++ ) {                                                 
a0005008:	e2866004 	add	r6, r6, #4                                    
   *  APIs are optional.                                              
   *                                                                  
   *  NOTE: Currently RTEMS Classic API tasks are always enabled.     
   */                                                                 
                                                                      
  for ( the_api = 1;                                                  
a000500c:	1affffdd 	bne	a0004f88 <pthread_key_create+0x48>            
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
a0005010:	e59f2028 	ldr	r2, [pc, #40]	; a0005040 <pthread_key_create+0x100>
  Objects_Information *information,                                   
  Objects_Control     *the_object,                                    
  uint32_t             name                                           
)                                                                     
{                                                                     
  _Objects_Set_local_object(                                          
a0005014:	e5943008 	ldr	r3, [r4, #8]                                  
a0005018:	e1d410b8 	ldrh	r1, [r4, #8]                                 
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
a000501c:	e592201c 	ldr	r2, [r2, #28]                                 
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
a0005020:	e3a05000 	mov	r5, #0                                        
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
a0005024:	e7824101 	str	r4, [r2, r1, lsl #2]                          
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  /* ASSERT: information->is_string == false */                       
  the_object->name.name_u32 = name;                                   
a0005028:	e584500c 	str	r5, [r4, #12]                                 
                                                                      
  }                                                                   
                                                                      
  _Objects_Open_u32( &_POSIX_Keys_Information, &the_key->Object, 0 ); 
                                                                      
  *key = the_key->Object.id;                                          
a000502c:	e5883000 	str	r3, [r8]                                      
                                                                      
  _Thread_Enable_dispatch();                                          
a0005030:	eb000b39 	bl	a0007d1c <_Thread_Enable_dispatch>             
                                                                      
  return 0;                                                           
a0005034:	e1a00005 	mov	r0, r5                                        
}                                                                     
a0005038:	e8bd85f0 	pop	{r4, r5, r6, r7, r8, sl, pc}                  
                                                                      

a0007084 <pthread_mutexattr_setpshared>: int pthread_mutexattr_setpshared( pthread_mutexattr_t *attr, int pshared ) { if ( !attr || !attr->is_initialized )
a0007084:	e3500000 	cmp	r0, #0                                        
a0007088:	0a000007 	beq	a00070ac <pthread_mutexattr_setpshared+0x28>  
a000708c:	e5903000 	ldr	r3, [r0]                                      
a0007090:	e3530000 	cmp	r3, #0                                        
a0007094:	0a000004 	beq	a00070ac <pthread_mutexattr_setpshared+0x28>  
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
a0007098:	e3510001 	cmp	r1, #1                                        
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
a000709c:	95801004 	strls	r1, [r0, #4]                                
      return 0;                                                       
a00070a0:	93a00000 	movls	r0, #0                                      
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
a00070a4:	912fff1e 	bxls	lr                                           
a00070a8:	ea000001 	b	a00070b4 <pthread_mutexattr_setpshared+0x30>    <== NOT EXECUTED
  pthread_mutexattr_t *attr,                                          
  int                  pshared                                        
)                                                                     
{                                                                     
  if ( !attr || !attr->is_initialized )                               
    return EINVAL;                                                    
a00070ac:	e3a00016 	mov	r0, #22                                       
a00070b0:	e12fff1e 	bx	lr                                             
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
      return 0;                                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
a00070b4:	e3a00016 	mov	r0, #22                                       <== NOT EXECUTED
  }                                                                   
}                                                                     
a00070b8:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

a0006aec <pthread_rwlockattr_setpshared>: int pthread_rwlockattr_setpshared( pthread_rwlockattr_t *attr, int pshared ) { if ( !attr )
a0006aec:	e3500000 	cmp	r0, #0                                        
a0006af0:	0a000007 	beq	a0006b14 <pthread_rwlockattr_setpshared+0x28> 
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
a0006af4:	e5903000 	ldr	r3, [r0]                                      
a0006af8:	e3530000 	cmp	r3, #0                                        
a0006afc:	0a000004 	beq	a0006b14 <pthread_rwlockattr_setpshared+0x28> 
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
a0006b00:	e3510001 	cmp	r1, #1                                        
    case PTHREAD_PROCESS_SHARED:                                      
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
a0006b04:	95801004 	strls	r1, [r0, #4]                                
      return 0;                                                       
a0006b08:	93a00000 	movls	r0, #0                                      
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
    return EINVAL;                                                    
                                                                      
  switch ( pshared ) {                                                
a0006b0c:	912fff1e 	bxls	lr                                           
a0006b10:	ea000001 	b	a0006b1c <pthread_rwlockattr_setpshared+0x30>   <== NOT EXECUTED
{                                                                     
  if ( !attr )                                                        
    return EINVAL;                                                    
                                                                      
  if ( !attr->is_initialized )                                        
    return EINVAL;                                                    
a0006b14:	e3a00016 	mov	r0, #22                                       
a0006b18:	e12fff1e 	bx	lr                                             
    case PTHREAD_PROCESS_PRIVATE:                                     
      attr->process_shared = pshared;                                 
      return 0;                                                       
                                                                      
    default:                                                          
      return EINVAL;                                                  
a0006b1c:	e3a00016 	mov	r0, #22                                       <== NOT EXECUTED
  }                                                                   
}                                                                     
a0006b20:	e12fff1e 	bx	lr                                             <== NOT EXECUTED
                                                                      

a000577c <sigaction>: struct sigaction *oact ) { ISR_Level level; if ( oact )
a000577c:	e3520000 	cmp	r2, #0                                        
int sigaction(                                                        
  int                     sig,                                        
  const struct sigaction *act,                                        
  struct sigaction       *oact                                        
)                                                                     
{                                                                     
a0005780:	e92d40f0 	push	{r4, r5, r6, r7, lr}                         
a0005784:	e1a04000 	mov	r4, r0                                        
a0005788:	e1a05001 	mov	r5, r1                                        
  ISR_Level     level;                                                
                                                                      
  if ( oact )                                                         
a000578c:	0a00000a 	beq	a00057bc <sigaction+0x40>                     
    *oact = _POSIX_signals_Vectors[ sig ];                            
a0005790:	e3a0300c 	mov	r3, #12                                       
a0005794:	e0030394 	mul	r3, r4, r3                                    
a0005798:	e59f00dc 	ldr	r0, [pc, #220]	; a000587c <sigaction+0x100>   
a000579c:	e0801003 	add	r1, r0, r3                                    
a00057a0:	e7900003 	ldr	r0, [r0, r3]                                  
a00057a4:	e1a03002 	mov	r3, r2                                        
a00057a8:	e4830004 	str	r0, [r3], #4                                  
a00057ac:	e5910004 	ldr	r0, [r1, #4]                                  
a00057b0:	e5820004 	str	r0, [r2, #4]                                  
a00057b4:	e5912008 	ldr	r2, [r1, #8]                                  
a00057b8:	e5832004 	str	r2, [r3, #4]                                  
                                                                      
  if ( !sig )                                                         
a00057bc:	e3540000 	cmp	r4, #0                                        
a00057c0:	0a000004 	beq	a00057d8 <sigaction+0x5c>                     
                                                                      
static inline bool is_valid_signo(                                    
  int signo                                                           
)                                                                     
{                                                                     
  return ((signo) >= 1 && (signo) <= 32 );                            
a00057c4:	e2443001 	sub	r3, r4, #1                                    
    rtems_set_errno_and_return_minus_one( EINVAL );                   
                                                                      
  if ( !is_valid_signo(sig) )                                         
a00057c8:	e353001f 	cmp	r3, #31                                       
a00057cc:	8a000001 	bhi	a00057d8 <sigaction+0x5c>                     
   *                                                                  
   *  NOTE: Solaris documentation claims to "silently enforce" this which
   *        contradicts the POSIX specification.                      
   */                                                                 
                                                                      
  if ( sig == SIGKILL )                                               
a00057d0:	e3540009 	cmp	r4, #9                                        
a00057d4:	1a000004 	bne	a00057ec <sigaction+0x70>                     
    rtems_set_errno_and_return_minus_one( EINVAL );                   
a00057d8:	eb002146 	bl	a000dcf8 <__errno>                             
a00057dc:	e3a03016 	mov	r3, #22                                       
a00057e0:	e5803000 	str	r3, [r0]                                      
a00057e4:	e3e00000 	mvn	r0, #0                                        
a00057e8:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
  /*                                                                  
   *  Evaluate the new action structure and set the global signal vector
   *  appropriately.                                                  
   */                                                                 
                                                                      
  if ( act ) {                                                        
a00057ec:	e3550000 	cmp	r5, #0                                        
a00057f0:	0a00001f 	beq	a0005874 <sigaction+0xf8>                     
static inline uint32_t arm_interrupt_disable( void )                  
{                                                                     
  uint32_t arm_switch_reg;                                            
  uint32_t level;                                                     
                                                                      
  asm volatile (                                                      
a00057f4:	e10f7000 	mrs	r7, CPSR                                      
a00057f8:	e3873080 	orr	r3, r7, #128	; 0x80                           
a00057fc:	e129f003 	msr	CPSR_fc, r3                                   
     *  Unless the user is installing the default signal actions, then
     *  we can just copy the provided sigaction structure into the vectors.
     */                                                               
                                                                      
    _ISR_Disable( level );                                            
      if ( act->sa_handler == SIG_DFL ) {                             
a0005800:	e5953008 	ldr	r3, [r5, #8]                                  
a0005804:	e59f6070 	ldr	r6, [pc, #112]	; a000587c <sigaction+0x100>   
a0005808:	e3530000 	cmp	r3, #0                                        
a000580c:	1a000009 	bne	a0005838 <sigaction+0xbc>                     
        _POSIX_signals_Vectors[ sig ] = _POSIX_signals_Default_vectors[ sig ];
a0005810:	e283300c 	add	r3, r3, #12                                   
a0005814:	e0040493 	mul	r4, r3, r4                                    
a0005818:	e59f1060 	ldr	r1, [pc, #96]	; a0005880 <sigaction+0x104>    
a000581c:	e0863004 	add	r3, r6, r4                                    
a0005820:	e0812004 	add	r2, r1, r4                                    
a0005824:	e7911004 	ldr	r1, [r1, r4]                                  
a0005828:	e7861004 	str	r1, [r6, r4]                                  
a000582c:	e9920006 	ldmib	r2, {r1, r2}                                
a0005830:	e9830006 	stmib	r3, {r1, r2}                                
a0005834:	ea00000b 	b	a0005868 <sigaction+0xec>                       
      } else {                                                        
         _POSIX_signals_Clear_process_signals( sig );                 
a0005838:	e1a00004 	mov	r0, r4                                        
a000583c:	eb0015a3 	bl	a000aed0 <_POSIX_signals_Clear_process_signals>
         _POSIX_signals_Vectors[ sig ] = *act;                        
a0005840:	e3a0300c 	mov	r3, #12                                       
a0005844:	e0040493 	mul	r4, r3, r4                                    
a0005848:	e1a03005 	mov	r3, r5                                        
a000584c:	e4931004 	ldr	r1, [r3], #4                                  
a0005850:	e0862004 	add	r2, r6, r4                                    
a0005854:	e7861004 	str	r1, [r6, r4]                                  
a0005858:	e5951004 	ldr	r1, [r5, #4]                                  
a000585c:	e5821004 	str	r1, [r2, #4]                                  
a0005860:	e5933004 	ldr	r3, [r3, #4]                                  
a0005864:	e5823008 	str	r3, [r2, #8]                                  
                                                                      
static inline void arm_interrupt_enable( uint32_t level )             
{                                                                     
  ARM_SWITCH_REGISTERS;                                               
                                                                      
  asm volatile (                                                      
a0005868:	e129f007 	msr	CPSR_fc, r7                                   
   *      now (signals not posted when SIG_IGN).                      
   *    + If we are now ignoring a signal that was previously pending,
   *      we clear the pending signal indicator.                      
   */                                                                 
                                                                      
  return 0;                                                           
a000586c:	e3a00000 	mov	r0, #0                                        
a0005870:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          
a0005874:	e1a00005 	mov	r0, r5                                        <== NOT EXECUTED
}                                                                     
a0005878:	e8bd80f0 	pop	{r4, r5, r6, r7, pc}                          <== NOT EXECUTED
                                                                      

a0007e4c <sigwait>: int sigwait( const sigset_t *set, int *sig ) {
a0007e4c:	e92d4010 	push	{r4, lr}                                     
a0007e50:	e1a04001 	mov	r4, r1                                        
  int status;                                                         
                                                                      
  status = sigtimedwait( set, NULL, NULL );                           
a0007e54:	e3a01000 	mov	r1, #0                                        
a0007e58:	e1a02001 	mov	r2, r1                                        
a0007e5c:	ebffff8e 	bl	a0007c9c <sigtimedwait>                        
                                                                      
  if ( status != -1 ) {                                               
a0007e60:	e3700001 	cmn	r0, #1                                        
a0007e64:	0a000004 	beq	a0007e7c <sigwait+0x30>                       
    if ( sig )                                                        
a0007e68:	e3540000 	cmp	r4, #0                                        
a0007e6c:	0a000005 	beq	a0007e88 <sigwait+0x3c>                       
      *sig = status;                                                  
a0007e70:	e5840000 	str	r0, [r4]                                      
    return 0;                                                         
a0007e74:	e3a00000 	mov	r0, #0                                        
a0007e78:	e8bd8010 	pop	{r4, pc}                                      
  }                                                                   
                                                                      
  return errno;                                                       
a0007e7c:	eb00206e 	bl	a001003c <__errno>                             
a0007e80:	e5900000 	ldr	r0, [r0]                                      
a0007e84:	e8bd8010 	pop	{r4, pc}                                      
  status = sigtimedwait( set, NULL, NULL );                           
                                                                      
  if ( status != -1 ) {                                               
    if ( sig )                                                        
      *sig = status;                                                  
    return 0;                                                         
a0007e88:	e1a00004 	mov	r0, r4                                        <== NOT EXECUTED
  }                                                                   
                                                                      
  return errno;                                                       
}                                                                     
a0007e8c:	e8bd8010 	pop	{r4, pc}                                      <== NOT EXECUTED