Annotated Report

ffc0dc20 <_CORE_mutex_Seize_interrupt_trylock>:                       
#if defined(__RTEMS_DO_NOT_INLINE_CORE_MUTEX_SEIZE__)                 
int _CORE_mutex_Seize_interrupt_trylock(                              
  CORE_mutex_Control  *the_mutex,                                     
  ISR_Level           *level_p                                        
)                                                                     
{                                                                     
ffc0dc20:	7c 08 02 a6 	mflr    r0                                     
ffc0dc24:	94 21 ff f8 	stwu    r1,-8(r1)                              
{                                                                     
  Thread_Control   *executing;                                        
                                                                      
  /* disabled when you get here */                                    
                                                                      
  executing = _Thread_Executing;                                      
ffc0dc28:	3d 20 00 00 	lis     r9,0                                   
ffc0dc2c:	81 29 27 6c 	lwz     r9,10092(r9)                           
ffc0dc30:	90 01 00 0c 	stw     r0,12(r1)                              
  executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;         
ffc0dc34:	38 00 00 00 	li      r0,0                                   
ffc0dc38:	90 09 00 34 	stw     r0,52(r9)                              
  if ( !_CORE_mutex_Is_locked( the_mutex ) ) {                        
ffc0dc3c:	81 63 00 50 	lwz     r11,80(r3)                             
ffc0dc40:	2f 8b 00 00 	cmpwi   cr7,r11,0                              
ffc0dc44:	41 9e 00 bc 	beq-    cr7,ffc0dd00 <_CORE_mutex_Seize_interrupt_trylock+0xe0>
 */                                                                   
RTEMS_INLINE_ROUTINE bool _CORE_mutex_Is_inherit_priority(            
  CORE_mutex_Attributes *the_attribute                                
)                                                                     
{                                                                     
  return the_attribute->discipline == CORE_MUTEX_DISCIPLINES_PRIORITY_INHERIT;
ffc0dc48:	81 63 00 48 	lwz     r11,72(r3)                             
  /* disabled when you get here */                                    
                                                                      
  executing = _Thread_Executing;                                      
  executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;         
  if ( !_CORE_mutex_Is_locked( the_mutex ) ) {                        
    the_mutex->lock       = CORE_MUTEX_LOCKED;                        
ffc0dc4c:	90 03 00 50 	stw     r0,80(r3)                              
    the_mutex->holder     = executing;                                
    the_mutex->holder_id  = executing->Object.id;                     
    the_mutex->nest_count = 1;                                        
    if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 
ffc0dc50:	2f 8b 00 02 	cmpwi   cr7,r11,2                              
  executing = _Thread_Executing;                                      
  executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;         
  if ( !_CORE_mutex_Is_locked( the_mutex ) ) {                        
    the_mutex->lock       = CORE_MUTEX_LOCKED;                        
    the_mutex->holder     = executing;                                
    the_mutex->holder_id  = executing->Object.id;                     
ffc0dc54:	80 09 00 08 	lwz     r0,8(r9)                               
                                                                      
  executing = _Thread_Executing;                                      
  executing->Wait.return_code = CORE_MUTEX_STATUS_SUCCESSFUL;         
  if ( !_CORE_mutex_Is_locked( the_mutex ) ) {                        
    the_mutex->lock       = CORE_MUTEX_LOCKED;                        
    the_mutex->holder     = executing;                                
ffc0dc58:	91 23 00 5c 	stw     r9,92(r3)                              
    the_mutex->holder_id  = executing->Object.id;                     
ffc0dc5c:	90 03 00 60 	stw     r0,96(r3)                              
    the_mutex->nest_count = 1;                                        
ffc0dc60:	38 00 00 01 	li      r0,1                                   
ffc0dc64:	90 03 00 54 	stw     r0,84(r3)                              
    if ( _CORE_mutex_Is_inherit_priority( &the_mutex->Attributes ) || 
ffc0dc68:	41 9e 00 0c 	beq-    cr7,ffc0dc74 <_CORE_mutex_Seize_interrupt_trylock+0x54>
ffc0dc6c:	2f 8b 00 03 	cmpwi   cr7,r11,3                              
ffc0dc70:	40 be 00 18 	bne+    cr7,ffc0dc88 <_CORE_mutex_Seize_interrupt_trylock+0x68>
#endif                                                                
                                                                      
      executing->resource_count++;                                    
    }                                                                 
                                                                      
    if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
ffc0dc74:	2f 8b 00 03 	cmpwi   cr7,r11,3                              
       _Chain_Prepend_unprotected( &executing->lock_mutex,            
                                   &the_mutex->queue.lock_queue );    
       the_mutex->queue.priority_before = executing->current_priority;
#endif                                                                
                                                                      
      executing->resource_count++;                                    
ffc0dc78:	81 69 00 1c 	lwz     r11,28(r9)                             
ffc0dc7c:	38 0b 00 01 	addi    r0,r11,1                               
ffc0dc80:	90 09 00 1c 	stw     r0,28(r9)                              
    }                                                                 
                                                                      
    if ( !_CORE_mutex_Is_priority_ceiling( &the_mutex->Attributes ) ) {
ffc0dc84:	41 be 00 08 	beq+    cr7,ffc0dc8c <_CORE_mutex_Seize_interrupt_trylock+0x6c>
      _ISR_Enable( *level_p );                                        
ffc0dc88:	48 00 00 a8 	b       ffc0dd30 <_CORE_mutex_Seize_interrupt_trylock+0x110>
       */                                                             
    {                                                                 
      Priority_Control  ceiling;                                      
      Priority_Control  current;                                      
                                                                      
      ceiling = the_mutex->Attributes.priority_ceiling;               
ffc0dc8c:	80 03 00 4c 	lwz     r0,76(r3)                              
      current = executing->current_priority;                          
ffc0dc90:	81 69 00 14 	lwz     r11,20(r9)                             
      if ( current == ceiling ) {                                     
ffc0dc94:	7f 8b 00 00 	cmpw    cr7,r11,r0                             
ffc0dc98:	40 be 00 08 	bne+    cr7,ffc0dca0 <_CORE_mutex_Seize_interrupt_trylock+0x80>
        _ISR_Enable( *level_p );                                      
ffc0dc9c:	48 00 00 94 	b       ffc0dd30 <_CORE_mutex_Seize_interrupt_trylock+0x110>
        return 0;                                                     
      }                                                               
                                                                      
      if ( current > ceiling ) {                                      
ffc0dca0:	7f 8b 00 40 	cmplw   cr7,r11,r0                             
ffc0dca4:	40 bd 00 34 	ble+    cr7,ffc0dcd8 <_CORE_mutex_Seize_interrupt_trylock+0xb8>
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
ffc0dca8:	3d 20 00 00 	lis     r9,0                                   
ffc0dcac:	81 69 27 2c 	lwz     r11,10028(r9)                          
ffc0dcb0:	38 0b 00 01 	addi    r0,r11,1                               
ffc0dcb4:	90 09 27 2c 	stw     r0,10028(r9)                           
ffc0dcb8:	80 04 00 00 	lwz     r0,0(r4)                               
ffc0dcbc:	7c 00 01 24 	mtmsr   r0                                     
        _Thread_Disable_dispatch();                                   
        _ISR_Enable( *level_p );                                      
        _Thread_Change_priority(                                      
ffc0dcc0:	80 83 00 4c 	lwz     r4,76(r3)                              
ffc0dcc4:	38 a0 00 00 	li      r5,0                                   
ffc0dcc8:	80 63 00 5c 	lwz     r3,92(r3)                              
ffc0dccc:	4b ff c1 45 	bl      ffc09e10 <_Thread_Change_priority>     
          the_mutex->holder,                                          
          the_mutex->Attributes.priority_ceiling,                     
         false                                                        
        );                                                            
        _Thread_Enable_dispatch();                                    
ffc0dcd0:	4b ff c7 c9 	bl      ffc0a498 <_Thread_Enable_dispatch>     
ffc0dcd4:	48 00 00 64 	b       ffc0dd38 <_CORE_mutex_Seize_interrupt_trylock+0x118>
        return 0;                                                     
      }                                                               
      /* if ( current < ceiling ) */ {                                
        executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
ffc0dcd8:	38 00 00 06 	li      r0,6                                   
ffc0dcdc:	90 09 00 34 	stw     r0,52(r9)                              
        the_mutex->lock       = CORE_MUTEX_UNLOCKED;                  
        the_mutex->nest_count = 0;     /* undo locking above */       
ffc0dce0:	38 00 00 00 	li      r0,0                                   
ffc0dce4:	90 03 00 54 	stw     r0,84(r3)                              
        _Thread_Enable_dispatch();                                    
        return 0;                                                     
      }                                                               
      /* if ( current < ceiling ) */ {                                
        executing->Wait.return_code = CORE_MUTEX_STATUS_CEILING_VIOLATED;
        the_mutex->lock       = CORE_MUTEX_UNLOCKED;                  
ffc0dce8:	38 00 00 01 	li      r0,1                                   
ffc0dcec:	90 03 00 50 	stw     r0,80(r3)                              
        the_mutex->nest_count = 0;     /* undo locking above */       
        executing->resource_count--;   /* undo locking above */       
ffc0dcf0:	81 69 00 1c 	lwz     r11,28(r9)                             
ffc0dcf4:	38 0b ff ff 	addi    r0,r11,-1                              
ffc0dcf8:	90 09 00 1c 	stw     r0,28(r9)                              
        _ISR_Enable( *level_p );                                      
ffc0dcfc:	48 00 00 34 	b       ffc0dd30 <_CORE_mutex_Seize_interrupt_trylock+0x110>
  /*                                                                  
   *  At this point, we know the mutex was not available.  If this thread
   *  is the thread that has locked the mutex, let's see if we are allowed
   *  to nest access.                                                 
   */                                                                 
  if ( _Thread_Is_executing( the_mutex->holder ) ) {                  
ffc0dd00:	81 63 00 5c 	lwz     r11,92(r3)                             
ffc0dd04:	7f 8b 48 00 	cmpw    cr7,r11,r9                             
ffc0dd08:	40 be 00 44 	bne+    cr7,ffc0dd4c <_CORE_mutex_Seize_interrupt_trylock+0x12c>
    switch ( the_mutex->Attributes.lock_nesting_behavior ) {          
ffc0dd0c:	80 03 00 40 	lwz     r0,64(r3)                              
ffc0dd10:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc0dd14:	41 9e 00 10 	beq-    cr7,ffc0dd24 <_CORE_mutex_Seize_interrupt_trylock+0x104>
ffc0dd18:	2f 80 00 01 	cmpwi   cr7,r0,1                               
ffc0dd1c:	40 be 00 30 	bne+    cr7,ffc0dd4c <_CORE_mutex_Seize_interrupt_trylock+0x12c>
ffc0dd20:	48 00 00 20 	b       ffc0dd40 <_CORE_mutex_Seize_interrupt_trylock+0x120><== NOT EXECUTED
      case CORE_MUTEX_NESTING_ACQUIRES:                               
        the_mutex->nest_count++;                                      
ffc0dd24:	81 23 00 54 	lwz     r9,84(r3)                              
ffc0dd28:	38 09 00 01 	addi    r0,r9,1                                
ffc0dd2c:	90 03 00 54 	stw     r0,84(r3)                              
ffc0dd30:	80 04 00 00 	lwz     r0,0(r4)                               
ffc0dd34:	7c 00 01 24 	mtmsr   r0                                     
ffc0dd38:	38 60 00 00 	li      r3,0                                   
ffc0dd3c:	48 00 00 14 	b       ffc0dd50 <_CORE_mutex_Seize_interrupt_trylock+0x130>
        _ISR_Enable( *level_p );                                      
        return 0;                                                     
      case CORE_MUTEX_NESTING_IS_ERROR:                               
        executing->Wait.return_code = CORE_MUTEX_STATUS_NESTING_NOT_ALLOWED;
ffc0dd40:	38 00 00 02 	li      r0,2                                   <== NOT EXECUTED
ffc0dd44:	90 0b 00 34 	stw     r0,52(r11)                             <== NOT EXECUTED
        _ISR_Enable( *level_p );                                      
ffc0dd48:	4b ff ff e8 	b       ffc0dd30 <_CORE_mutex_Seize_interrupt_trylock+0x110><== NOT EXECUTED
ffc0dd4c:	38 60 00 01 	li      r3,1                                   
  return _CORE_mutex_Seize_interrupt_trylock_body( the_mutex, level_p );
}                                                                     
ffc0dd50:	80 01 00 0c 	lwz     r0,12(r1)                              
ffc0dd54:	38 21 00 08 	addi    r1,r1,8                                
ffc0dd58:	7c 08 03 a6 	mtlr    r0                                     
ffc0dd5c:	4e 80 00 20 	blr                                            
                                                                      
ffc0a5dc <_Heap_Walk_print>:                                          
{                                                                     
  /* Do nothing */                                                    
}                                                                     
                                                                      
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{                                                                     
ffc0a5dc:	94 21 ff 88 	stwu    r1,-120(r1)                            
ffc0a5e0:	7c 08 02 a6 	mflr    r0                                     
ffc0a5e4:	93 e1 00 74 	stw     r31,116(r1)                            
ffc0a5e8:	90 01 00 7c 	stw     r0,124(r1)                             
ffc0a5ec:	7c 60 1b 78 	mr      r0,r3                                  
ffc0a5f0:	90 c1 00 1c 	stw     r6,28(r1)                              
ffc0a5f4:	90 e1 00 20 	stw     r7,32(r1)                              
ffc0a5f8:	91 01 00 24 	stw     r8,36(r1)                              
ffc0a5fc:	91 21 00 28 	stw     r9,40(r1)                              
ffc0a600:	91 41 00 2c 	stw     r10,44(r1)                             
ffc0a604:	40 86 00 24 	bne-    cr1,ffc0a628 <_Heap_Walk_print+0x4c>   
ffc0a608:	d8 21 00 30 	stfd    f1,48(r1)                              <== NOT EXECUTED
ffc0a60c:	d8 41 00 38 	stfd    f2,56(r1)                              <== NOT EXECUTED
ffc0a610:	d8 61 00 40 	stfd    f3,64(r1)                              <== NOT EXECUTED
ffc0a614:	d8 81 00 48 	stfd    f4,72(r1)                              <== NOT EXECUTED
ffc0a618:	d8 a1 00 50 	stfd    f5,80(r1)                              <== NOT EXECUTED
ffc0a61c:	d8 c1 00 58 	stfd    f6,88(r1)                              <== NOT EXECUTED
ffc0a620:	d8 e1 00 60 	stfd    f7,96(r1)                              <== NOT EXECUTED
ffc0a624:	d9 01 00 68 	stfd    f8,104(r1)                             <== NOT EXECUTED
  va_list ap;                                                         
                                                                      
  if ( error ) {                                                      
ffc0a628:	2f 84 00 00 	cmpwi   cr7,r4,0                               
{                                                                     
  /* Do nothing */                                                    
}                                                                     
                                                                      
static void _Heap_Walk_print( int source, bool error, const char *fmt, ... )
{                                                                     
ffc0a62c:	7c bf 2b 78 	mr      r31,r5                                 
  va_list ap;                                                         
                                                                      
  if ( error ) {                                                      
ffc0a630:	41 be 00 10 	beq+    cr7,ffc0a640 <_Heap_Walk_print+0x64>   
    printk( "FAIL[%d]: ", source );                                   
ffc0a634:	3c 60 ff c2 	lis     r3,-62                                 
ffc0a638:	38 63 e1 71 	addi    r3,r3,-7823                            
ffc0a63c:	48 00 00 0c 	b       ffc0a648 <_Heap_Walk_print+0x6c>       
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
ffc0a640:	3c 60 ff c2 	lis     r3,-62                                 
ffc0a644:	38 63 e1 7c 	addi    r3,r3,-7812                            
ffc0a648:	7c 04 03 78 	mr      r4,r0                                  
ffc0a64c:	4c c6 31 82 	crclr   4*cr1+eq                               
ffc0a650:	4b ff b4 a5 	bl      ffc05af4 <printk>                      
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0a654:	38 00 00 03 	li      r0,3                                   
ffc0a658:	98 01 00 08 	stb     r0,8(r1)                               
ffc0a65c:	38 00 00 00 	li      r0,0                                   
  vprintk( fmt, ap );                                                 
ffc0a660:	7f e3 fb 78 	mr      r3,r31                                 
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0a664:	98 01 00 09 	stb     r0,9(r1)                               
ffc0a668:	38 01 00 80 	addi    r0,r1,128                              
  vprintk( fmt, ap );                                                 
ffc0a66c:	38 81 00 08 	addi    r4,r1,8                                
    printk( "FAIL[%d]: ", source );                                   
  } else {                                                            
    printk( "PASS[%d]: ", source );                                   
  }                                                                   
                                                                      
  va_start( ap, fmt );                                                
ffc0a670:	90 01 00 0c 	stw     r0,12(r1)                              
ffc0a674:	38 01 00 10 	addi    r0,r1,16                               
ffc0a678:	90 01 00 10 	stw     r0,16(r1)                              
  vprintk( fmt, ap );                                                 
ffc0a67c:	4b ff d4 d5 	bl      ffc07b50 <vprintk>                     
  va_end( ap );                                                       
}                                                                     
ffc0a680:	80 01 00 7c 	lwz     r0,124(r1)                             
ffc0a684:	83 e1 00 74 	lwz     r31,116(r1)                            
ffc0a688:	38 21 00 78 	addi    r1,r1,120                              
ffc0a68c:	7c 08 03 a6 	mtlr    r0                                     
ffc0a690:	4e 80 00 20 	blr                                            
                                                                      
ffc0864c <_IO_Manager_initialization>:                                
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc0864c:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc08650:	7c 08 02 a6 	mflr    r0                                     
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
ffc08654:	3d 20 00 00 	lis     r9,0                                   
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc08658:	90 01 00 2c 	stw     r0,44(r1)                              
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
ffc0865c:	39 29 20 a0 	addi    r9,r9,8352                             
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc08660:	93 c1 00 20 	stw     r30,32(r1)                             
ffc08664:	93 e1 00 24 	stw     r31,36(r1)                             
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
  drivers_in_table  = Configuration.number_of_device_drivers;         
  number_of_drivers = Configuration.maximum_drivers;                  
ffc08668:	83 c9 00 2c 	lwz     r30,44(r9)                             
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
  drivers_in_table  = Configuration.number_of_device_drivers;         
ffc0866c:	83 e9 00 30 	lwz     r31,48(r9)                             
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc08670:	93 61 00 14 	stw     r27,20(r1)                             
                                                                      
  /*                                                                  
   *  If the user claims there are less drivers than are actually in  
   *  the table, then let's just go with the table's count.           
   */                                                                 
  if ( number_of_drivers <= drivers_in_table )                        
ffc08674:	7f 9e f8 40 	cmplw   cr7,r30,r31                            
 *  workspace.                                                        
 *                                                                    
 */                                                                   
                                                                      
void _IO_Manager_initialization(void)                                 
{                                                                     
ffc08678:	93 81 00 18 	stw     r28,24(r1)                             
ffc0867c:	3f 80 00 00 	lis     r28,0                                  
ffc08680:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc08684:	3f a0 00 00 	lis     r29,0                                  
ffc08688:	93 21 00 0c 	stw     r25,12(r1)                             
ffc0868c:	93 41 00 10 	stw     r26,16(r1)                             
  uint32_t                    index;                                  
  rtems_driver_address_table *driver_table;                           
  uint32_t                    drivers_in_table;                       
  uint32_t                    number_of_drivers;                      
                                                                      
  driver_table      = Configuration.Device_driver_table;              
ffc08690:	83 69 00 34 	lwz     r27,52(r9)                             
                                                                      
  /*                                                                  
   *  If the user claims there are less drivers than are actually in  
   *  the table, then let's just go with the table's count.           
   */                                                                 
  if ( number_of_drivers <= drivers_in_table )                        
ffc08694:	40 9d 00 40 	ble-    cr7,ffc086d4 <_IO_Manager_initialization+0x88>
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
ffc08698:	1f 3e 00 18 	mulli   r25,r30,24                             
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
ffc0869c:	7f 23 cb 78 	mr      r3,r25                                 
ffc086a0:	48 00 35 d9 	bl      ffc0bc78 <_Workspace_Allocate_or_fatal_error>
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
ffc086a4:	7f 25 cb 78 	mr      r5,r25                                 
ffc086a8:	38 80 00 00 	li      r4,0                                   
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
ffc086ac:	93 dd 27 a4 	stw     r30,10148(r29)                         
  /*                                                                  
   *  The application requested extra slots in the driver table, so we
   *  have to allocate a new driver table and copy theirs to it.      
   */                                                                 
                                                                      
  _IO_Driver_address_table = (rtems_driver_address_table *)           
ffc086b0:	7c 7a 1b 78 	mr      r26,r3                                 
ffc086b4:	90 7c 27 a8 	stw     r3,10152(r28)                          
      _Workspace_Allocate_or_fatal_error(                             
        sizeof( rtems_driver_address_table ) * ( number_of_drivers )  
      );                                                              
  _IO_Number_of_drivers = number_of_drivers;                          
                                                                      
  memset(                                                             
ffc086b8:	48 00 8c 19 	bl      ffc112d0 <memset>                      
ffc086bc:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
ffc086c0:	39 40 00 00 	li      r10,0                                  
ffc086c4:	3b ff 00 01 	addi    r31,r31,1                              
ffc086c8:	40 be 00 4c 	bne+    cr7,ffc08714 <_IO_Manager_initialization+0xc8>
ffc086cc:	3b e0 00 01 	li      r31,1                                  <== NOT EXECUTED
ffc086d0:	48 00 00 44 	b       ffc08714 <_IO_Manager_initialization+0xc8><== NOT EXECUTED
   *  If the maximum number of driver is the same as the number in the
   *  table, then we do not have to copy the driver table.  They can't
   *  register any dynamically.                                       
   */                                                                 
  if ( number_of_drivers == drivers_in_table ) {                      
    _IO_Driver_address_table = driver_table;                          
ffc086d4:	93 7c 27 a8 	stw     r27,10152(r28)                         
    _IO_Number_of_drivers = number_of_drivers;                        
ffc086d8:	93 fd 27 a4 	stw     r31,10148(r29)                         
    return;                                                           
ffc086dc:	48 00 00 48 	b       ffc08724 <_IO_Manager_initialization+0xd8>
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
    _IO_Driver_address_table[index] = driver_table[index];            
ffc086e0:	7c c9 50 6e 	lwzux   r6,r9,r10                              
ffc086e4:	81 09 00 08 	lwz     r8,8(r9)                               
ffc086e8:	80 09 00 0c 	lwz     r0,12(r9)                              
ffc086ec:	80 e9 00 04 	lwz     r7,4(r9)                               
ffc086f0:	7c da 51 2e 	stwx    r6,r26,r10                             
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
ffc086f4:	39 4a 00 18 	addi    r10,r10,24                             
    _IO_Driver_address_table[index] = driver_table[index];            
ffc086f8:	90 eb 00 04 	stw     r7,4(r11)                              
ffc086fc:	91 0b 00 08 	stw     r8,8(r11)                              
ffc08700:	90 0b 00 0c 	stw     r0,12(r11)                             
ffc08704:	81 09 00 14 	lwz     r8,20(r9)                              
ffc08708:	80 09 00 10 	lwz     r0,16(r9)                              
ffc0870c:	91 0b 00 14 	stw     r8,20(r11)                             
ffc08710:	90 0b 00 10 	stw     r0,16(r11)                             
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
ffc08714:	37 ff ff ff 	addic.  r31,r31,-1                             
    _IO_Driver_address_table[index] = driver_table[index];            
ffc08718:	7f 69 db 78 	mr      r9,r27                                 
ffc0871c:	7d 7a 52 14 	add     r11,r26,r10                            
  memset(                                                             
    _IO_Driver_address_table, 0,                                      
    sizeof( rtems_driver_address_table ) * ( number_of_drivers )      
  );                                                                  
                                                                      
  for ( index = 0 ; index < drivers_in_table ; index++ )              
ffc08720:	40 82 ff c0 	bne+    ffc086e0 <_IO_Manager_initialization+0x94>
    _IO_Driver_address_table[index] = driver_table[index];            
  number_of_drivers = drivers_in_table;                               
}                                                                     
ffc08724:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc08728:	83 21 00 0c 	lwz     r25,12(r1)                             
ffc0872c:	7c 08 03 a6 	mtlr    r0                                     
ffc08730:	83 41 00 10 	lwz     r26,16(r1)                             
ffc08734:	83 61 00 14 	lwz     r27,20(r1)                             
ffc08738:	83 81 00 18 	lwz     r28,24(r1)                             
ffc0873c:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc08740:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc08744:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc08748:	38 21 00 28 	addi    r1,r1,40                               
ffc0874c:	4e 80 00 20 	blr                                            
                                                                      
ffc093c0 <_Internal_error_Occurred>:                                  
void _Internal_error_Occurred(                                        
  Internal_errors_Source  the_source,                                 
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
ffc093c0:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc093c4:	7c 08 02 a6 	mflr    r0                                     
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
ffc093c8:	3d 60 00 00 	lis     r11,0                                  
ffc093cc:	39 2b 2c 90 	addi    r9,r11,11408                           
void _Internal_error_Occurred(                                        
  Internal_errors_Source  the_source,                                 
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
ffc093d0:	90 01 00 14 	stw     r0,20(r1)                              
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
  _Internal_errors_What_happened.is_internal = is_internal;           
  _Internal_errors_What_happened.the_error   = the_error;             
ffc093d4:	90 a9 00 08 	stw     r5,8(r9)                               
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
  _Internal_errors_What_happened.is_internal = is_internal;           
ffc093d8:	98 89 00 04 	stb     r4,4(r9)                               
void _Internal_error_Occurred(                                        
  Internal_errors_Source  the_source,                                 
  bool                    is_internal,                                
  Internal_errors_t       the_error                                   
)                                                                     
{                                                                     
ffc093dc:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc093e0:	7c bf 2b 78 	mr      r31,r5                                 
                                                                      
  _Internal_errors_What_happened.the_source  = the_source;            
ffc093e4:	90 6b 2c 90 	stw     r3,11408(r11)                          
  _Internal_errors_What_happened.is_internal = is_internal;           
  _Internal_errors_What_happened.the_error   = the_error;             
                                                                      
  _User_extensions_Fatal( the_source, is_internal, the_error );       
ffc093e8:	48 00 23 19 	bl      ffc0b700 <_User_extensions_Fatal>      
                                                                      
RTEMS_INLINE_ROUTINE void _System_state_Set (                         
  System_state_Codes state                                            
)                                                                     
{                                                                     
  _System_state_Current = state;                                      
ffc093ec:	38 00 00 05 	li      r0,5                                   
ffc093f0:	3d 20 00 00 	lis     r9,0                                   
                                                                      
  _System_state_Set( SYSTEM_STATE_FAILED );                           
                                                                      
  _CPU_Fatal_halt( the_error );                                       
ffc093f4:	7f e3 fb 78 	mr      r3,r31                                 
ffc093f8:	90 09 27 90 	stw     r0,10128(r9)                           
ffc093fc:	4b ff a3 55 	bl      ffc03750 <_BSP_Fatal_error>            
ffc09400:	48 00 00 00 	b       ffc09400 <_Internal_error_Occurred+0x40><== NOT EXECUTED
                                                                      
ffc09500 <_Objects_Extend_information>:                               
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09500:	94 21 ff b8 	stwu    r1,-72(r1)                             
ffc09504:	7c 08 02 a6 	mflr    r0                                     
ffc09508:	90 01 00 4c 	stw     r0,76(r1)                              
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
ffc0950c:	81 63 00 34 	lwz     r11,52(r3)                             
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09510:	93 61 00 34 	stw     r27,52(r1)                             
  minimum_index = _Objects_Get_index( information->minimum_id );      
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
ffc09514:	2f 8b 00 00 	cmpwi   cr7,r11,0                              
 */                                                                   
                                                                      
void _Objects_Extend_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09518:	93 e1 00 44 	stw     r31,68(r1)                             
ffc0951c:	7c 7f 1b 78 	mr      r31,r3                                 
ffc09520:	92 a1 00 1c 	stw     r21,28(r1)                             
ffc09524:	92 c1 00 20 	stw     r22,32(r1)                             
ffc09528:	92 e1 00 24 	stw     r23,36(r1)                             
ffc0952c:	93 01 00 28 	stw     r24,40(r1)                             
ffc09530:	93 21 00 2c 	stw     r25,44(r1)                             
ffc09534:	93 41 00 30 	stw     r26,48(r1)                             
ffc09538:	93 81 00 38 	stw     r28,56(r1)                             
ffc0953c:	93 a1 00 3c 	stw     r29,60(r1)                             
ffc09540:	93 c1 00 40 	stw     r30,64(r1)                             
                                                                      
  /*                                                                  
   *  Search for a free block of indexes. The block variable ends up set
   *  to block_count + 1 if the table needs to be extended.           
   */                                                                 
  minimum_index = _Objects_Get_index( information->minimum_id );      
ffc09544:	a3 63 00 0a 	lhz     r27,10(r3)                             
  index_base    = minimum_index;                                      
  block         = 0;                                                  
                                                                      
  /* if ( information->maximum < minimum_index ) */                   
  if ( information->object_blocks == NULL )                           
ffc09548:	40 be 00 14 	bne+    cr7,ffc0955c <_Objects_Extend_information+0x5c>
ffc0954c:	7f 7e db 78 	mr      r30,r27                                
ffc09550:	3b 80 00 00 	li      r28,0                                  
ffc09554:	3b 40 00 00 	li      r26,0                                  
ffc09558:	48 00 00 4c 	b       ffc095a4 <_Objects_Extend_information+0xa4>
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
ffc0955c:	a1 23 00 14 	lhz     r9,20(r3)                              
ffc09560:	7f 7e db 78 	mr      r30,r27                                
ffc09564:	a3 43 00 10 	lhz     r26,16(r3)                             
ffc09568:	3b 80 00 00 	li      r28,0                                  
ffc0956c:	7f 5a 4b 96 	divwu   r26,r26,r9                             
ffc09570:	2f 9a 00 00 	cmpwi   cr7,r26,0                              
ffc09574:	38 1a 00 01 	addi    r0,r26,1                               
ffc09578:	40 be 00 20 	bne+    cr7,ffc09598 <_Objects_Extend_information+0x98>
ffc0957c:	38 00 00 01 	li      r0,1                                   <== NOT EXECUTED
ffc09580:	48 00 00 18 	b       ffc09598 <_Objects_Extend_information+0x98><== NOT EXECUTED
                                                                      
    for ( ; block < block_count; block++ ) {                          
      if ( information->object_blocks[ block ] == NULL )              
ffc09584:	7d 4b 50 2e 	lwzx    r10,r11,r10                            
ffc09588:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0958c:	41 9e 00 18 	beq-    cr7,ffc095a4 <_Objects_Extend_information+0xa4>
ffc09590:	7f de 4a 14 	add     r30,r30,r9                             
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
ffc09594:	3b 9c 00 01 	addi    r28,r28,1                              
ffc09598:	34 00 ff ff 	addic.  r0,r0,-1                               
      if ( information->object_blocks[ block ] == NULL )              
ffc0959c:	57 8a 10 3a 	rlwinm  r10,r28,2,0,29                         
  if ( information->object_blocks == NULL )                           
    block_count = 0;                                                  
  else {                                                              
    block_count = information->maximum / information->allocation_size;
                                                                      
    for ( ; block < block_count; block++ ) {                          
ffc095a0:	40 82 ff e4 	bne+    ffc09584 <_Objects_Extend_information+0x84>
      else                                                            
        index_base += information->allocation_size;                   
    }                                                                 
  }                                                                   
                                                                      
  maximum = (uint32_t) information->maximum + information->allocation_size;
ffc095a4:	a0 1f 00 14 	lhz     r0,20(r31)                             
ffc095a8:	a2 df 00 10 	lhz     r22,16(r31)                            
ffc095ac:	7e c0 b2 14 	add     r22,r0,r22                             
  /*                                                                  
   *  We need to limit the number of objects to the maximum number    
   *  representable in the index portion of the object Id.  In the    
   *  case of 16-bit Ids, this is only 256 object instances.          
   */                                                                 
  if ( maximum > OBJECTS_ID_FINAL_INDEX ) {                           
ffc095b0:	2b 96 ff ff 	cmplwi  cr7,r22,65535                          
ffc095b4:	41 9d 02 1c 	bgt-    cr7,ffc097d0 <_Objects_Extend_information+0x2d0>
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
  if ( information->auto_extend ) {                                   
ffc095b8:	89 3f 00 12 	lbz     r9,18(r31)                             
                                                                      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
ffc095bc:	80 7f 00 18 	lwz     r3,24(r31)                             
  if ( information->auto_extend ) {                                   
ffc095c0:	2f 89 00 00 	cmpwi   cr7,r9,0                               
                                                                      
  /*                                                                  
   * Allocate the name table, and the objects and if it fails either return or
   * generate a fatal error depending on auto-extending being active. 
   */                                                                 
  block_size = information->allocation_size * information->size;      
ffc095c4:	7c 60 19 d6 	mullw   r3,r0,r3                               
  if ( information->auto_extend ) {                                   
ffc095c8:	41 9e 00 14 	beq-    cr7,ffc095dc <_Objects_Extend_information+0xdc>
    new_object_block = _Workspace_Allocate( block_size );             
ffc095cc:	48 00 26 f5 	bl      ffc0bcc0 <_Workspace_Allocate>         
    if ( !new_object_block )                                          
ffc095d0:	7c 7d 1b 79 	mr.     r29,r3                                 
ffc095d4:	40 a2 00 10 	bne+    ffc095e4 <_Objects_Extend_information+0xe4>
ffc095d8:	48 00 01 f8 	b       ffc097d0 <_Objects_Extend_information+0x2d0>
      return;                                                         
  } else {                                                            
    new_object_block = _Workspace_Allocate_or_fatal_error( block_size );
ffc095dc:	48 00 26 9d 	bl      ffc0bc78 <_Workspace_Allocate_or_fatal_error>
ffc095e0:	7c 7d 1b 78 	mr      r29,r3                                 
  }                                                                   
                                                                      
  /*                                                                  
   *  If the index_base is the maximum we need to grow the tables.    
   */                                                                 
  if (index_base >= information->maximum ) {                          
ffc095e4:	a0 1f 00 10 	lhz     r0,16(r31)                             
ffc095e8:	7f 9e 00 40 	cmplw   cr7,r30,r0                             
ffc095ec:	41 9c 01 5c 	blt-    cr7,ffc09748 <_Objects_Extend_information+0x248>
     */                                                               
                                                                      
    /*                                                                
     *  Up the block count and maximum                                
     */                                                               
    block_count++;                                                    
ffc095f0:	3b 3a 00 01 	addi    r25,r26,1                              
     *  Allocate the tables and break it up.                          
     */                                                               
    block_size = block_count *                                        
           (sizeof(void *) + sizeof(uint32_t) + sizeof(Objects_Name *)) +
          ((maximum + minimum_index) * sizeof(Objects_Control *));    
    object_blocks = (void**) _Workspace_Allocate( block_size );       
ffc095f4:	1c 19 00 03 	mulli   r0,r25,3                               
ffc095f8:	7c 76 da 14 	add     r3,r22,r27                             
ffc095fc:	7c 63 02 14 	add     r3,r3,r0                               
ffc09600:	54 63 10 3a 	rlwinm  r3,r3,2,0,29                           
ffc09604:	48 00 26 bd 	bl      ffc0bcc0 <_Workspace_Allocate>         
                                                                      
    if ( !object_blocks ) {                                           
ffc09608:	7c 77 1b 79 	mr.     r23,r3                                 
ffc0960c:	40 a2 00 10 	bne+    ffc0961c <_Objects_Extend_information+0x11c>
      _Workspace_Free( new_object_block );                            
ffc09610:	7f a3 eb 78 	mr      r3,r29                                 
ffc09614:	48 00 26 e1 	bl      ffc0bcf4 <_Workspace_Free>             
      return;                                                         
ffc09618:	48 00 01 b8 	b       ffc097d0 <_Objects_Extend_information+0x2d0>
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
ffc0961c:	a0 1f 00 10 	lhz     r0,16(r31)                             
    }                                                                 
                                                                      
    /*                                                                
     *  Break the block into the various sections.                    
     */                                                               
    inactive_per_block = (uint32_t *) _Addresses_Add_offset(          
ffc09620:	57 39 10 3a 	rlwinm  r25,r25,2,0,29                         
RTEMS_INLINE_ROUTINE void *_Addresses_Add_offset (                    
  const void *base,                                                   
  uintptr_t   offset                                                  
)                                                                     
{                                                                     
  return (void *)((uintptr_t)base + offset);                          
ffc09624:	7f 17 ca 14 	add     r24,r23,r25                            
     *  Take the block count down. Saves all the (block_count - 1)    
     *  in the copies.                                                
     */                                                               
    block_count--;                                                    
                                                                      
    if ( information->maximum > minimum_index ) {                     
ffc09628:	7f 80 d8 40 	cmplw   cr7,r0,r27                             
ffc0962c:	7f 38 ca 14 	add     r25,r24,r25                            
ffc09630:	41 9d 00 20 	bgt-    cr7,ffc09650 <_Objects_Extend_information+0x150>
ffc09634:	2f 9b 00 00 	cmpwi   cr7,r27,0                              
ffc09638:	39 20 00 00 	li      r9,0                                   
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
        local_table[ index ] = NULL;                                  
ffc0963c:	38 00 00 00 	li      r0,0                                   
ffc09640:	3b 7b 00 01 	addi    r27,r27,1                              
ffc09644:	40 be 00 50 	bne+    cr7,ffc09694 <_Objects_Extend_information+0x194>
ffc09648:	3b 60 00 01 	li      r27,1                                  <== NOT EXECUTED
ffc0964c:	48 00 00 48 	b       ffc09694 <_Objects_Extend_information+0x194><== NOT EXECUTED
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
ffc09650:	57 55 10 3a 	rlwinm  r21,r26,2,0,29                         
      /*                                                              
       *  Copy each section of the table over. This has to be performed as
       *  separate parts as size of each block has changed.           
       */                                                             
                                                                      
      memcpy( object_blocks,                                          
ffc09654:	80 9f 00 34 	lwz     r4,52(r31)                             
ffc09658:	7e a5 ab 78 	mr      r5,r21                                 
ffc0965c:	48 00 7b 75 	bl      ffc111d0 <memcpy>                      
              information->object_blocks,                             
              block_count * sizeof(void*) );                          
      memcpy( inactive_per_block,                                     
ffc09660:	80 9f 00 30 	lwz     r4,48(r31)                             
ffc09664:	7e a5 ab 78 	mr      r5,r21                                 
ffc09668:	7f 03 c3 78 	mr      r3,r24                                 
ffc0966c:	48 00 7b 65 	bl      ffc111d0 <memcpy>                      
              information->inactive_per_block,                        
              block_count * sizeof(uint32_t) );                       
      memcpy( local_table,                                            
ffc09670:	a0 1f 00 10 	lhz     r0,16(r31)                             
ffc09674:	80 9f 00 1c 	lwz     r4,28(r31)                             
ffc09678:	7f 23 cb 78 	mr      r3,r25                                 
ffc0967c:	7f 7b 02 14 	add     r27,r27,r0                             
ffc09680:	57 65 10 3a 	rlwinm  r5,r27,2,0,29                          
ffc09684:	48 00 7b 4d 	bl      ffc111d0 <memcpy>                      
ffc09688:	48 00 00 18 	b       ffc096a0 <_Objects_Extend_information+0x1a0>
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
        local_table[ index ] = NULL;                                  
ffc0968c:	7c 0b c9 2e 	stwx    r0,r11,r25                             
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
ffc09690:	39 29 00 01 	addi    r9,r9,1                                
ffc09694:	37 7b ff ff 	addic.  r27,r27,-1                             
        local_table[ index ] = NULL;                                  
ffc09698:	55 2b 10 3a 	rlwinm  r11,r9,2,0,29                          
    } else {                                                          
                                                                      
      /*                                                              
       *  Deal with the special case of the 0 to minimum_index        
       */                                                             
      for ( index = 0; index < minimum_index; index++ ) {             
ffc0969c:	40 82 ff f0 	bne+    ffc0968c <_Objects_Extend_information+0x18c>
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
ffc096a0:	a1 5f 00 14 	lhz     r10,20(r31)                            
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
ffc096a4:	38 00 00 00 	li      r0,0                                   
ffc096a8:	57 5a 10 3a 	rlwinm  r26,r26,2,0,29                         
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
ffc096ac:	7d 7e 52 14 	add     r11,r30,r10                            
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
ffc096b0:	7c 18 d1 2e 	stwx    r0,r24,r26                             
ffc096b4:	7f 9e 58 40 	cmplw   cr7,r30,r11                            
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
ffc096b8:	57 c9 10 3a 	rlwinm  r9,r30,2,0,29                          
    }                                                                 
                                                                      
    /*                                                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
ffc096bc:	7c 17 d1 2e 	stwx    r0,r23,r26                             
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
ffc096c0:	7d 39 4a 14 	add     r9,r25,r9                              
          index++ ) {                                                 
      local_table[ index ] = NULL;                                    
ffc096c4:	38 0a 00 01 	addi    r0,r10,1                               
ffc096c8:	39 40 00 00 	li      r10,0                                  
ffc096cc:	41 9d 00 0c 	bgt-    cr7,ffc096d8 <_Objects_Extend_information+0x1d8>
ffc096d0:	2f 8b 00 00 	cmpwi   cr7,r11,0                              
ffc096d4:	40 be 00 14 	bne+    cr7,ffc096e8 <_Objects_Extend_information+0x1e8>
ffc096d8:	38 00 00 01 	li      r0,1                                   <== NOT EXECUTED
ffc096dc:	48 00 00 0c 	b       ffc096e8 <_Objects_Extend_information+0x1e8><== NOT EXECUTED
ffc096e0:	91 49 00 00 	stw     r10,0(r9)                              
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
          index < ( information->allocation_size + index_base );      
          index++ ) {                                                 
ffc096e4:	39 29 00 04 	addi    r9,r9,4                                
     *  Initialise the new entries in the table.                      
     */                                                               
    object_blocks[block_count] = NULL;                                
    inactive_per_block[block_count] = 0;                              
                                                                      
    for ( index=index_base ;                                          
ffc096e8:	34 00 ff ff 	addic.  r0,r0,-1                               
ffc096ec:	40 82 ff f4 	bne+    ffc096e0 <_Objects_Extend_information+0x1e0>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc096f0:	7c 00 00 a6 	mfmsr   r0                                     
ffc096f4:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc096f8:	7c 09 48 78 	andc    r9,r0,r9                               
ffc096fc:	7d 20 01 24 	mtmsr   r9                                     
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
ffc09700:	81 7f 00 00 	lwz     r11,0(r31)                             
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
ffc09704:	56 d6 04 3e 	clrlwi  r22,r22,16                             
    information->maximum_id = _Objects_Build_id(                      
ffc09708:	a1 3f 00 04 	lhz     r9,4(r31)                              
ffc0970c:	55 6b c0 0e 	rlwinm  r11,r11,24,0,7                         
      local_table[ index ] = NULL;                                    
    }                                                                 
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
ffc09710:	80 7f 00 34 	lwz     r3,52(r31)                             
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
ffc09714:	65 6b 00 01 	oris    r11,r11,1                              
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
ffc09718:	93 1f 00 30 	stw     r24,48(r31)                            
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
ffc0971c:	55 29 d8 08 	rlwinm  r9,r9,27,0,4                           
ffc09720:	7d 69 4b 78 	or      r9,r11,r9                              
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
ffc09724:	93 3f 00 1c 	stw     r25,28(r31)                            
    information->maximum = (Objects_Maximum) maximum;                 
    information->maximum_id = _Objects_Build_id(                      
ffc09728:	7d 29 b3 78 	or      r9,r9,r22                              
ffc0972c:	91 3f 00 0c 	stw     r9,12(r31)                             
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
    information->inactive_per_block = inactive_per_block;             
    information->local_table = local_table;                           
    information->maximum = (Objects_Maximum) maximum;                 
ffc09730:	b2 df 00 10 	sth     r22,16(r31)                            
                                                                      
    _ISR_Disable( level );                                            
                                                                      
    old_tables = information->object_blocks;                          
                                                                      
    information->object_blocks = object_blocks;                       
ffc09734:	92 ff 00 34 	stw     r23,52(r31)                            
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc09738:	7c 00 01 24 	mtmsr   r0                                     
        information->maximum                                          
      );                                                              
                                                                      
    _ISR_Enable( level );                                             
                                                                      
    if ( old_tables )                                                 
ffc0973c:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc09740:	41 9e 00 08 	beq-    cr7,ffc09748 <_Objects_Extend_information+0x248>
      _Workspace_Free( old_tables );                                  
ffc09744:	48 00 25 b1 	bl      ffc0bcf4 <_Workspace_Free>             
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
ffc09748:	81 3f 00 34 	lwz     r9,52(r31)                             
ffc0974c:	57 9c 10 3a 	rlwinm  r28,r28,2,0,29                         
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
ffc09750:	3b 61 00 08 	addi    r27,r1,8                               
ffc09754:	a0 bf 00 14 	lhz     r5,20(r31)                             
  }                                                                   
                                                                      
  /*                                                                  
   *  Assign the new object block to the object block table.          
   */                                                                 
  information->object_blocks[ block ] = new_object_block;             
ffc09758:	7f a9 e1 2e 	stwx    r29,r9,r28                             
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
ffc0975c:	7f a4 eb 78 	mr      r4,r29                                 
ffc09760:	7f 63 db 78 	mr      r3,r27                                 
ffc09764:	80 df 00 18 	lwz     r6,24(r31)                             
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
ffc09768:	3b bf 00 20 	addi    r29,r31,32                             
  information->object_blocks[ block ] = new_object_block;             
                                                                      
  /*                                                                  
   *  Initialize objects .. add to a local chain first.               
   */                                                                 
  _Chain_Initialize(                                                  
ffc0976c:	48 00 44 79 	bl      ffc0dbe4 <_Chain_Initialize>           
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
ffc09770:	48 00 00 2c 	b       ffc0979c <_Objects_Extend_information+0x29c>
                                                                      
    the_object->id = _Objects_Build_id(                               
ffc09774:	81 7f 00 00 	lwz     r11,0(r31)                             
ffc09778:	a0 1f 00 04 	lhz     r0,4(r31)                              
ffc0977c:	55 6b c0 0e 	rlwinm  r11,r11,24,0,7                         
ffc09780:	65 6b 00 01 	oris    r11,r11,1                              
ffc09784:	54 00 d8 08 	rlwinm  r0,r0,27,0,4                           
ffc09788:	7d 60 03 78 	or      r0,r11,r0                              
ffc0978c:	7c 00 f3 78 	or      r0,r0,r30                              
ffc09790:	90 09 00 08 	stw     r0,8(r9)                               
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
ffc09794:	3b de 00 01 	addi    r30,r30,1                              
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
ffc09798:	4b ff f2 81 	bl      ffc08a18 <_Chain_Append>               
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
ffc0979c:	7f 63 db 78 	mr      r3,r27                                 
ffc097a0:	4b ff f2 a9 	bl      ffc08a48 <_Chain_Get>                  
ffc097a4:	7c 69 1b 79 	mr.     r9,r3                                  
        information->the_class,                                       
        _Objects_Local_node,                                          
        index                                                         
      );                                                              
                                                                      
    _Chain_Append( &information->Inactive, &the_object->Node );       
ffc097a8:	7f a3 eb 78 	mr      r3,r29                                 
ffc097ac:	7d 24 4b 78 	mr      r4,r9                                  
  /*                                                                  
   *  Move from the local chain, initialise, then append to the inactive chain
   */                                                                 
  index = index_base;                                                 
                                                                      
  while ((the_object = (Objects_Control *) _Chain_Get( &Inactive )) != NULL ) {
ffc097b0:	40 82 ff c4 	bne+    ffc09774 <_Objects_Extend_information+0x274>
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
ffc097b4:	a0 1f 00 14 	lhz     r0,20(r31)                             
  information->inactive =                                             
ffc097b8:	a1 3f 00 2c 	lhz     r9,44(r31)                             
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
ffc097bc:	81 7f 00 30 	lwz     r11,48(r31)                            
  information->inactive =                                             
ffc097c0:	7d 20 4a 14 	add     r9,r0,r9                               
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
ffc097c4:	54 00 04 3e 	clrlwi  r0,r0,16                               
  information->inactive =                                             
ffc097c8:	b1 3f 00 2c 	sth     r9,44(r31)                             
    _Chain_Append( &information->Inactive, &the_object->Node );       
                                                                      
    index++;                                                          
  }                                                                   
                                                                      
  information->inactive_per_block[ block ] = information->allocation_size;
ffc097cc:	7c 0b e1 2e 	stwx    r0,r11,r28                             
  information->inactive =                                             
    (Objects_Maximum)(information->inactive + information->allocation_size);
}                                                                     
ffc097d0:	80 01 00 4c 	lwz     r0,76(r1)                              
ffc097d4:	82 a1 00 1c 	lwz     r21,28(r1)                             
ffc097d8:	7c 08 03 a6 	mtlr    r0                                     
ffc097dc:	82 c1 00 20 	lwz     r22,32(r1)                             
ffc097e0:	82 e1 00 24 	lwz     r23,36(r1)                             
ffc097e4:	83 01 00 28 	lwz     r24,40(r1)                             
ffc097e8:	83 21 00 2c 	lwz     r25,44(r1)                             
ffc097ec:	83 41 00 30 	lwz     r26,48(r1)                             
ffc097f0:	83 61 00 34 	lwz     r27,52(r1)                             
ffc097f4:	83 81 00 38 	lwz     r28,56(r1)                             
ffc097f8:	83 a1 00 3c 	lwz     r29,60(r1)                             
ffc097fc:	83 c1 00 40 	lwz     r30,64(r1)                             
ffc09800:	83 e1 00 44 	lwz     r31,68(r1)                             
ffc09804:	38 21 00 48 	addi    r1,r1,72                               
ffc09808:	4e 80 00 20 	blr                                            
                                                                      
ffc09be4 <_Objects_Shrink_information>:                               
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09be4:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc09be8:	7c 08 02 a6 	mflr    r0                                     
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
ffc09bec:	39 20 00 00 	li      r9,0                                   
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09bf0:	90 01 00 1c 	stw     r0,28(r1)                              
ffc09bf4:	93 c1 00 10 	stw     r30,16(r1)                             
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
ffc09bf8:	a1 43 00 10 	lhz     r10,16(r3)                             
                                                                      
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
ffc09bfc:	a3 c3 00 0a 	lhz     r30,10(r3)                             
  block_count = (information->maximum - index_base) /                 
ffc09c00:	a1 63 00 14 	lhz     r11,20(r3)                             
ffc09c04:	7d 5e 50 50 	subf    r10,r30,r10                            
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09c08:	93 e1 00 14 	stw     r31,20(r1)                             
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
ffc09c0c:	7d 4a 5b 96 	divwu   r10,r10,r11                            
 */                                                                   
                                                                      
void _Objects_Shrink_information(                                     
  Objects_Information *information                                    
)                                                                     
{                                                                     
ffc09c10:	93 81 00 08 	stw     r28,8(r1)                              
ffc09c14:	93 a1 00 0c 	stw     r29,12(r1)                             
ffc09c18:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc09c1c:	7c 7f 1b 78 	mr      r31,r3                                 
  /*                                                                  
   * Search the list to find block or chunk with all objects inactive.
   */                                                                 
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
ffc09c20:	38 0a 00 01 	addi    r0,r10,1                               
ffc09c24:	40 be 00 88 	bne+    cr7,ffc09cac <_Objects_Shrink_information+0xc8>
ffc09c28:	38 00 00 01 	li      r0,1                                   <== NOT EXECUTED
ffc09c2c:	48 00 00 80 	b       ffc09cac <_Objects_Shrink_information+0xc8><== NOT EXECUTED
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
    if ( information->inactive_per_block[ block ] ==                  
ffc09c30:	81 5f 00 30 	lwz     r10,48(r31)                            
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc09c34:	39 29 00 01 	addi    r9,r9,1                                
    if ( information->inactive_per_block[ block ] ==                  
ffc09c38:	7d 4a e8 2e 	lwzx    r10,r10,r29                            
ffc09c3c:	7f 8a 58 00 	cmpw    cr7,r10,r11                            
ffc09c40:	40 be 00 68 	bne+    cr7,ffc09ca8 <_Objects_Shrink_information+0xc4>
         information->allocation_size ) {                             
                                                                      
      /*                                                              
       *  Assume the Inactive chain is never empty at this point      
       */                                                             
      the_object = (Objects_Control *) information->Inactive.first;   
ffc09c44:	80 7f 00 20 	lwz     r3,32(r31)                             
                                                                      
      do {                                                            
         index = _Objects_Get_index( the_object->id );                
ffc09c48:	a0 03 00 0a 	lhz     r0,10(r3)                              
         /*                                                           
          *  Get the next node before the node is extracted           
          */                                                          
         extract_me = the_object;                                     
         the_object = (Objects_Control *) the_object->Node.next;      
ffc09c4c:	83 83 00 00 	lwz     r28,0(r3)                              
         if ((index >= index_base) &&                                 
ffc09c50:	7f 80 f0 40 	cmplw   cr7,r0,r30                             
ffc09c54:	41 9c 00 18 	blt-    cr7,ffc09c6c <_Objects_Shrink_information+0x88>
             (index < (index_base + information->allocation_size))) { 
ffc09c58:	a1 3f 00 14 	lhz     r9,20(r31)                             
ffc09c5c:	7d 3e 4a 14 	add     r9,r30,r9                              
ffc09c60:	7f 80 48 40 	cmplw   cr7,r0,r9                              
ffc09c64:	40 bc 00 08 	bge+    cr7,ffc09c6c <_Objects_Shrink_information+0x88>
           _Chain_Extract( &extract_me->Node );                       
ffc09c68:	48 00 3f 55 	bl      ffc0dbbc <_Chain_Extract>              
         }                                                            
       }                                                              
       while ( the_object );                                          
ffc09c6c:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
ffc09c70:	7f 83 e3 78 	mr      r3,r28                                 
ffc09c74:	40 9e ff d4 	bne+    cr7,ffc09c48 <_Objects_Shrink_information+0x64>
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
ffc09c78:	81 3f 00 34 	lwz     r9,52(r31)                             
ffc09c7c:	7c 69 e8 2e 	lwzx    r3,r9,r29                              
ffc09c80:	48 00 20 75 	bl      ffc0bcf4 <_Workspace_Free>             
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
                                                                      
      information->inactive -= information->allocation_size;          
ffc09c84:	a1 5f 00 2c 	lhz     r10,44(r31)                            
ffc09c88:	a0 1f 00 14 	lhz     r0,20(r31)                             
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
ffc09c8c:	81 3f 00 34 	lwz     r9,52(r31)                             
      information->inactive_per_block[ block ] = 0;                   
ffc09c90:	81 7f 00 30 	lwz     r11,48(r31)                            
                                                                      
      information->inactive -= information->allocation_size;          
ffc09c94:	7c 00 50 50 	subf    r0,r0,r10                              
ffc09c98:	b0 1f 00 2c 	sth     r0,44(r31)                             
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
      information->inactive_per_block[ block ] = 0;                   
ffc09c9c:	7f 8b e9 2e 	stwx    r28,r11,r29                            
      /*                                                              
       *  Free the memory and reset the structures in the object' information
       */                                                             
                                                                      
      _Workspace_Free( information->object_blocks[ block ] );         
      information->object_blocks[ block ] = NULL;                     
ffc09ca0:	7f 89 e9 2e 	stwx    r28,r9,r29                             
      information->inactive_per_block[ block ] = 0;                   
                                                                      
      information->inactive -= information->allocation_size;          
                                                                      
      return;                                                         
ffc09ca4:	48 00 00 14 	b       ffc09cb8 <_Objects_Shrink_information+0xd4>
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
ffc09ca8:	7f de 5a 14 	add     r30,r30,r11                            
                                                                      
  index_base = _Objects_Get_index( information->minimum_id );         
  block_count = (information->maximum - index_base) /                 
                 information->allocation_size;                        
                                                                      
  for ( block = 0; block < block_count; block++ ) {                   
ffc09cac:	34 00 ff ff 	addic.  r0,r0,-1                               
ffc09cb0:	55 3d 10 3a 	rlwinm  r29,r9,2,0,29                          
ffc09cb4:	40 82 ff 7c 	bne+    ffc09c30 <_Objects_Shrink_information+0x4c>
      return;                                                         
    }                                                                 
                                                                      
    index_base += information->allocation_size;                       
  }                                                                   
}                                                                     
ffc09cb8:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc09cbc:	83 81 00 08 	lwz     r28,8(r1)                              
ffc09cc0:	7c 08 03 a6 	mtlr    r0                                     
ffc09cc4:	83 a1 00 0c 	lwz     r29,12(r1)                             
ffc09cc8:	83 c1 00 10 	lwz     r30,16(r1)                             
ffc09ccc:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc09cd0:	38 21 00 18 	addi    r1,r1,24                               
ffc09cd4:	4e 80 00 20 	blr                                            
                                                                      
ffc0a56c <_Thread_Initialize>:                                        
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0a56c:	94 21 ff d0 	stwu    r1,-48(r1)                             
ffc0a570:	7c 08 02 a6 	mflr    r0                                     
ffc0a574:	90 01 00 34 	stw     r0,52(r1)                              
                                                                      
  /*                                                                  
   *  Zero out all the allocated memory fields                        
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
ffc0a578:	38 00 00 00 	li      r0,0                                   
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0a57c:	93 41 00 18 	stw     r26,24(r1)                             
ffc0a580:	7d 3a 4b 78 	mr      r26,r9                                 
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
                                                                      
  extensions_area = NULL;                                             
  the_thread->libc_reent = NULL;                                      
ffc0a584:	90 04 01 3c 	stw     r0,316(r4)                             
                                                                      
  /*                                                                  
   *  Zero out all the allocated memory fields                        
   */                                                                 
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    the_thread->API_Extensions[i] = NULL;                             
ffc0a588:	90 04 01 40 	stw     r0,320(r4)                             
ffc0a58c:	90 04 01 44 	stw     r0,324(r4)                             
ffc0a590:	90 04 01 48 	stw     r0,328(r4)                             
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0a594:	81 21 00 40 	lwz     r9,64(r1)                              
ffc0a598:	93 a1 00 24 	stw     r29,36(r1)                             
ffc0a59c:	7c 7d 1b 78 	mr      r29,r3                                 
                                                                      
  /*                                                                  
   *  Allocate and Initialize the stack for this thread.              
   */                                                                 
  #if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) 
    actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
ffc0a5a0:	7c 83 23 78 	mr      r3,r4                                  
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0a5a4:	93 e1 00 2c 	stw     r31,44(r1)                             
ffc0a5a8:	7c 9f 23 78 	mr      r31,r4                                 
                                                                      
  /*                                                                  
   *  Allocate and Initialize the stack for this thread.              
   */                                                                 
  #if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) 
    actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
ffc0a5ac:	7c c4 33 78 	mr      r4,r6                                  
  Thread_CPU_budget_algorithms          budget_algorithm,             
  Thread_CPU_budget_algorithm_callout   budget_callout,               
  uint32_t                              isr_level,                    
  Objects_Name                          name                          
)                                                                     
{                                                                     
ffc0a5b0:	92 e1 00 0c 	stw     r23,12(r1)                             
ffc0a5b4:	7d 57 53 78 	mr      r23,r10                                
ffc0a5b8:	93 01 00 10 	stw     r24,16(r1)                             
ffc0a5bc:	93 61 00 1c 	stw     r27,28(r1)                             
ffc0a5c0:	7d 1b 43 78 	mr      r27,r8                                 
ffc0a5c4:	93 81 00 20 	stw     r28,32(r1)                             
ffc0a5c8:	7c fc 3b 78 	mr      r28,r7                                 
ffc0a5cc:	93 c1 00 28 	stw     r30,40(r1)                             
ffc0a5d0:	7c de 33 78 	mr      r30,r6                                 
ffc0a5d4:	93 21 00 14 	stw     r25,20(r1)                             
ffc0a5d8:	83 09 00 00 	lwz     r24,0(r9)                              
                                                                      
  /*                                                                  
   *  Allocate and Initialize the stack for this thread.              
   */                                                                 
  #if !defined(RTEMS_SCORE_THREAD_ENABLE_USER_PROVIDED_STACK_VIA_API) 
    actual_stack_size = _Thread_Stack_Allocate( the_thread, stack_size );
ffc0a5dc:	48 00 0a d9 	bl      ffc0b0b4 <_Thread_Stack_Allocate>      
    if ( !actual_stack_size || actual_stack_size < stack_size )       
ffc0a5e0:	2c 03 00 00 	cmpwi   r3,0                                   
ffc0a5e4:	41 82 01 90 	beq-    ffc0a774 <_Thread_Initialize+0x208>    
ffc0a5e8:	7f 83 f0 40 	cmplw   cr7,r3,r30                             
ffc0a5ec:	41 9c 01 88 	blt-    cr7,ffc0a774 <_Thread_Initialize+0x208>
                                                                      
  /*                                                                  
   *  Allocate the floating point area for this thread                
   */                                                                 
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    if ( is_fp ) {                                                    
ffc0a5f0:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
  Stack_Control *the_stack,                                           
  void          *starting_address,                                    
  size_t         size                                                 
)                                                                     
{                                                                     
  the_stack->area = starting_address;                                 
ffc0a5f4:	80 1f 00 d4 	lwz     r0,212(r31)                            
  the_stack->size = size;                                             
ffc0a5f8:	90 7f 00 c8 	stw     r3,200(r31)                            
ffc0a5fc:	3b 80 00 00 	li      r28,0                                  
  Stack_Control *the_stack,                                           
  void          *starting_address,                                    
  size_t         size                                                 
)                                                                     
{                                                                     
  the_stack->area = starting_address;                                 
ffc0a600:	90 1f 00 cc 	stw     r0,204(r31)                            
ffc0a604:	41 be 00 1c 	beq+    cr7,ffc0a620 <_Thread_Initialize+0xb4> 
      fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );               
ffc0a608:	38 60 01 08 	li      r3,264                                 
ffc0a60c:	48 00 16 b5 	bl      ffc0bcc0 <_Workspace_Allocate>         
      if ( !fp_area )                                                 
ffc0a610:	7c 7c 1b 79 	mr.     r28,r3                                 
ffc0a614:	40 a2 00 0c 	bne+    ffc0a620 <_Thread_Initialize+0xb4>     
ffc0a618:	3b c0 00 00 	li      r30,0                                  
ffc0a61c:	48 00 00 f0 	b       ffc0a70c <_Thread_Initialize+0x1a0>    
  #endif                                                              
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
ffc0a620:	3d 20 00 00 	lis     r9,0                                   
      fp_area = _Workspace_Allocate( CONTEXT_FP_SIZE );               
      if ( !fp_area )                                                 
        goto failed;                                                  
      fp_area = _Context_Fp_start( fp_area, 0 );                      
    }                                                                 
    the_thread->fp_context       = fp_area;                           
ffc0a624:	93 9f 01 38 	stw     r28,312(r31)                           
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc0a628:	38 00 00 00 	li      r0,0                                   
  #endif                                                              
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
ffc0a62c:	80 69 27 58 	lwz     r3,10072(r9)                           
ffc0a630:	3b c0 00 00 	li      r30,0                                  
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
ffc0a634:	90 1f 00 6c 	stw     r0,108(r31)                            
ffc0a638:	2f 83 00 00 	cmpwi   cr7,r3,0                               
      if ( !fp_area )                                                 
        goto failed;                                                  
      fp_area = _Context_Fp_start( fp_area, 0 );                      
    }                                                                 
    the_thread->fp_context       = fp_area;                           
    the_thread->Start.fp_context = fp_area;                           
ffc0a63c:	93 9f 00 d0 	stw     r28,208(r31)                           
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc0a640:	90 1f 00 50 	stw     r0,80(r31)                             
  the_watchdog->routine   = routine;                                  
ffc0a644:	90 1f 00 64 	stw     r0,100(r31)                            
  the_watchdog->id        = id;                                       
ffc0a648:	90 1f 00 68 	stw     r0,104(r31)                            
  #endif                                                              
                                                                      
  /*                                                                  
   *  Allocate the extensions area for this thread                    
   */                                                                 
  if ( _Thread_Maximum_extensions ) {                                 
ffc0a64c:	41 be 00 18 	beq+    cr7,ffc0a664 <_Thread_Initialize+0xf8> 
    extensions_area = _Workspace_Allocate(                            
ffc0a650:	38 63 00 01 	addi    r3,r3,1                                
ffc0a654:	54 63 10 3a 	rlwinm  r3,r3,2,0,29                           
ffc0a658:	48 00 16 69 	bl      ffc0bcc0 <_Workspace_Allocate>         
      (_Thread_Maximum_extensions + 1) * sizeof( void * )             
    );                                                                
    if ( !extensions_area )                                           
ffc0a65c:	7c 7e 1b 79 	mr.     r30,r3                                 
ffc0a660:	41 82 00 ac 	beq-    ffc0a70c <_Thread_Initialize+0x1a0>    
   * if they are linked to the thread. An extension user may          
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
ffc0a664:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
      (_Thread_Maximum_extensions + 1) * sizeof( void * )             
    );                                                                
    if ( !extensions_area )                                           
      goto failed;                                                    
  }                                                                   
  the_thread->extensions = (void **) extensions_area;                 
ffc0a668:	93 df 01 4c 	stw     r30,332(r31)                           
   * if they are linked to the thread. An extension user may          
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
ffc0a66c:	41 9e 00 30 	beq-    cr7,ffc0a69c <_Thread_Initialize+0x130>
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0a670:	3d 20 00 00 	lis     r9,0                                   
ffc0a674:	81 69 27 58 	lwz     r11,10072(r9)                          
      the_thread->extensions[i] = NULL;                               
ffc0a678:	38 00 00 00 	li      r0,0                                   
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0a67c:	39 20 00 00 	li      r9,0                                   
ffc0a680:	48 00 00 0c 	b       ffc0a68c <_Thread_Initialize+0x120>    
      the_thread->extensions[i] = NULL;                               
ffc0a684:	81 1f 01 4c 	lwz     r8,332(r31)                            
ffc0a688:	7c 08 51 2e 	stwx    r0,r8,r10                              
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0a68c:	7f 89 58 40 	cmplw   cr7,r9,r11                             
      the_thread->extensions[i] = NULL;                               
ffc0a690:	55 2a 10 3a 	rlwinm  r10,r9,2,0,29                          
   * create the extension long after tasks have been created          
   * so they cannot rely on the thread create user extension          
   * call.                                                            
   */                                                                 
  if ( the_thread->extensions ) {                                     
    for ( i = 0; i <= _Thread_Maximum_extensions ; i++ )              
ffc0a694:	39 29 00 01 	addi    r9,r9,1                                
ffc0a698:	40 9d ff ec 	ble+    cr7,ffc0a684 <_Thread_Initialize+0x118>
   *  General initialization                                          
   */                                                                 
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
  the_thread->Start.budget_algorithm = budget_algorithm;              
  the_thread->Start.budget_callout   = budget_callout;                
ffc0a69c:	80 01 00 38 	lwz     r0,56(r1)                              
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
                                                                      
  the_thread->current_state           = STATES_DORMANT;               
  the_thread->Wait.queue              = NULL;                         
ffc0a6a0:	3b 20 00 00 	li      r25,0                                  
                                                                      
  /*                                                                  
   *  General initialization                                          
   */                                                                 
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
ffc0a6a4:	9b 5f 00 b4 	stb     r26,180(r31)                           
  #if defined(RTEMS_ITRON_API)                                        
    the_thread->suspend_count         = 0;                            
  #endif                                                              
  the_thread->real_priority           = priority;                     
  the_thread->Start.initial_priority  = priority;                     
  _Thread_Set_priority( the_thread, priority );                       
ffc0a6a8:	7f 64 db 78 	mr      r4,r27                                 
ffc0a6ac:	7f e3 fb 78 	mr      r3,r31                                 
   *  General initialization                                          
   */                                                                 
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
  the_thread->Start.budget_algorithm = budget_algorithm;              
  the_thread->Start.budget_callout   = budget_callout;                
ffc0a6b0:	90 1f 00 bc 	stw     r0,188(r31)                            
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	break;                                                               
    #endif                                                            
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
ffc0a6b4:	80 01 00 3c 	lwz     r0,60(r1)                              
  /*                                                                  
   *  General initialization                                          
   */                                                                 
                                                                      
  the_thread->Start.is_preemptible   = is_preemptible;                
  the_thread->Start.budget_algorithm = budget_algorithm;              
ffc0a6b8:	92 ff 00 b8 	stw     r23,184(r31)                           
      case THREAD_CPU_BUDGET_ALGORITHM_CALLOUT:                       
	break;                                                               
    #endif                                                            
  }                                                                   
                                                                      
  the_thread->Start.isr_level         = isr_level;                    
ffc0a6bc:	90 1f 00 c0 	stw     r0,192(r31)                            
                                                                      
  the_thread->current_state           = STATES_DORMANT;               
ffc0a6c0:	38 00 00 01 	li      r0,1                                   
ffc0a6c4:	90 1f 00 10 	stw     r0,16(r31)                             
  the_thread->Wait.queue              = NULL;                         
ffc0a6c8:	93 3f 00 44 	stw     r25,68(r31)                            
  the_thread->resource_count          = 0;                            
ffc0a6cc:	93 3f 00 1c 	stw     r25,28(r31)                            
  #if defined(RTEMS_ITRON_API)                                        
    the_thread->suspend_count         = 0;                            
  #endif                                                              
  the_thread->real_priority           = priority;                     
ffc0a6d0:	93 7f 00 18 	stw     r27,24(r31)                            
  the_thread->Start.initial_priority  = priority;                     
ffc0a6d4:	93 7f 00 c4 	stw     r27,196(r31)                           
  _Thread_Set_priority( the_thread, priority );                       
ffc0a6d8:	48 00 07 d5 	bl      ffc0aeac <_Thread_Set_priority>        
  #if defined(RTEMS_DEBUG)                                            
    if ( index > information->maximum )                               
      return;                                                         
  #endif                                                              
                                                                      
  information->local_table[ index ] = the_object;                     
ffc0a6dc:	a0 1f 00 0a 	lhz     r0,10(r31)                             
ffc0a6e0:	81 3d 00 1c 	lwz     r9,28(r29)                             
   *  enabled when we get here.  We want to be able to run the        
   *  user extensions with dispatching enabled.  The Allocator        
   *  Mutex provides sufficient protection to let the user extensions 
   *  run safely.                                                     
   */                                                                 
  extension_status = _User_extensions_Thread_create( the_thread );    
ffc0a6e4:	7f e3 fb 78 	mr      r3,r31                                 
ffc0a6e8:	54 00 10 3a 	rlwinm  r0,r0,2,0,29                           
                                                                      
  /*                                                                  
   *  Initialize the CPU usage statistics                             
   */                                                                 
  #ifndef __RTEMS_USE_TICKS_FOR_STATISTICS__                          
    _Timestamp_Set_to_zero( &the_thread->cpu_time_used );             
ffc0a6ec:	93 3f 00 88 	stw     r25,136(r31)                           
ffc0a6f0:	7f e9 01 2e 	stwx    r31,r9,r0                              
    information,                                                      
    _Objects_Get_index( the_object->id ),                             
    the_object                                                        
  );                                                                  
                                                                      
  the_object->name = name;                                            
ffc0a6f4:	93 1f 00 0c 	stw     r24,12(r31)                            
ffc0a6f8:	93 3f 00 84 	stw     r25,132(r31)                           
   *  enabled when we get here.  We want to be able to run the        
   *  user extensions with dispatching enabled.  The Allocator        
   *  Mutex provides sufficient protection to let the user extensions 
   *  run safely.                                                     
   */                                                                 
  extension_status = _User_extensions_Thread_create( the_thread );    
ffc0a6fc:	48 00 10 95 	bl      ffc0b790 <_User_extensions_Thread_create>
  if ( extension_status )                                             
ffc0a700:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0a704:	38 60 00 01 	li      r3,1                                   
ffc0a708:	40 9e 00 70 	bne-    cr7,ffc0a778 <_Thread_Initialize+0x20c>
    return true;                                                      
                                                                      
failed:                                                               
  if ( the_thread->libc_reent )                                       
ffc0a70c:	80 7f 01 3c 	lwz     r3,316(r31)                            
ffc0a710:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0a714:	41 9e 00 08 	beq-    cr7,ffc0a71c <_Thread_Initialize+0x1b0>
    _Workspace_Free( the_thread->libc_reent );                        
ffc0a718:	48 00 15 dd 	bl      ffc0bcf4 <_Workspace_Free>             
                                                                      
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    if ( the_thread->API_Extensions[i] )                              
ffc0a71c:	80 7f 01 40 	lwz     r3,320(r31)                            
ffc0a720:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0a724:	41 9e 00 08 	beq-    cr7,ffc0a72c <_Thread_Initialize+0x1c0>
      _Workspace_Free( the_thread->API_Extensions[i] );               
ffc0a728:	48 00 15 cd 	bl      ffc0bcf4 <_Workspace_Free>             
failed:                                                               
  if ( the_thread->libc_reent )                                       
    _Workspace_Free( the_thread->libc_reent );                        
                                                                      
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    if ( the_thread->API_Extensions[i] )                              
ffc0a72c:	80 7f 01 44 	lwz     r3,324(r31)                            
ffc0a730:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0a734:	41 9e 00 08 	beq-    cr7,ffc0a73c <_Thread_Initialize+0x1d0>
      _Workspace_Free( the_thread->API_Extensions[i] );               
ffc0a738:	48 00 15 bd 	bl      ffc0bcf4 <_Workspace_Free>             <== NOT EXECUTED
failed:                                                               
  if ( the_thread->libc_reent )                                       
    _Workspace_Free( the_thread->libc_reent );                        
                                                                      
  for ( i=0 ; i <= THREAD_API_LAST ; i++ )                            
    if ( the_thread->API_Extensions[i] )                              
ffc0a73c:	80 7f 01 48 	lwz     r3,328(r31)                            
ffc0a740:	2f 83 00 00 	cmpwi   cr7,r3,0                               
ffc0a744:	41 9e 00 08 	beq-    cr7,ffc0a74c <_Thread_Initialize+0x1e0>
      _Workspace_Free( the_thread->API_Extensions[i] );               
ffc0a748:	48 00 15 ad 	bl      ffc0bcf4 <_Workspace_Free>             <== NOT EXECUTED
                                                                      
  if ( extensions_area )                                              
ffc0a74c:	2f 9e 00 00 	cmpwi   cr7,r30,0                              
ffc0a750:	41 9e 00 0c 	beq-    cr7,ffc0a75c <_Thread_Initialize+0x1f0>
    (void) _Workspace_Free( extensions_area );                        
ffc0a754:	7f c3 f3 78 	mr      r3,r30                                 
ffc0a758:	48 00 15 9d 	bl      ffc0bcf4 <_Workspace_Free>             
                                                                      
  #if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )      
    if ( fp_area )                                                    
ffc0a75c:	2f 9c 00 00 	cmpwi   cr7,r28,0                              
ffc0a760:	41 9e 00 0c 	beq-    cr7,ffc0a76c <_Thread_Initialize+0x200>
      (void) _Workspace_Free( fp_area );                              
ffc0a764:	7f 83 e3 78 	mr      r3,r28                                 
ffc0a768:	48 00 15 8d 	bl      ffc0bcf4 <_Workspace_Free>             
  #endif                                                              
                                                                      
   _Thread_Stack_Free( the_thread );                                  
ffc0a76c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0a770:	48 00 09 d1 	bl      ffc0b140 <_Thread_Stack_Free>          
  return false;                                                       
ffc0a774:	38 60 00 00 	li      r3,0                                   
                                                                      
                                                                      
}                                                                     
ffc0a778:	80 01 00 34 	lwz     r0,52(r1)                              
ffc0a77c:	82 e1 00 0c 	lwz     r23,12(r1)                             
ffc0a780:	7c 08 03 a6 	mtlr    r0                                     
ffc0a784:	83 01 00 10 	lwz     r24,16(r1)                             
ffc0a788:	83 21 00 14 	lwz     r25,20(r1)                             
ffc0a78c:	83 41 00 18 	lwz     r26,24(r1)                             
ffc0a790:	83 61 00 1c 	lwz     r27,28(r1)                             
ffc0a794:	83 81 00 20 	lwz     r28,32(r1)                             
ffc0a798:	83 a1 00 24 	lwz     r29,36(r1)                             
ffc0a79c:	83 c1 00 28 	lwz     r30,40(r1)                             
ffc0a7a0:	83 e1 00 2c 	lwz     r31,44(r1)                             
ffc0a7a4:	38 21 00 30 	addi    r1,r1,48                               
ffc0a7a8:	4e 80 00 20 	blr                                            
                                                                      
ffc0bf0c <_Thread_Restart>:                                           
bool _Thread_Restart(                                                 
  Thread_Control            *the_thread,                              
  void                      *pointer_argument,                        
  Thread_Entry_numeric_type  numeric_argument                         
)                                                                     
{                                                                     
ffc0bf0c:	94 21 ff e8 	stwu    r1,-24(r1)                             
ffc0bf10:	7c 08 02 a6 	mflr    r0                                     
ffc0bf14:	90 01 00 1c 	stw     r0,28(r1)                              
  if ( !_States_Is_dormant( the_thread->current_state ) ) {           
ffc0bf18:	80 03 00 10 	lwz     r0,16(r3)                              
bool _Thread_Restart(                                                 
  Thread_Control            *the_thread,                              
  void                      *pointer_argument,                        
  Thread_Entry_numeric_type  numeric_argument                         
)                                                                     
{                                                                     
ffc0bf1c:	93 e1 00 14 	stw     r31,20(r1)                             
ffc0bf20:	7c 7f 1b 78 	mr      r31,r3                                 
  if ( !_States_Is_dormant( the_thread->current_state ) ) {           
ffc0bf24:	70 09 00 01 	andi.   r9,r0,1                                
ffc0bf28:	38 00 00 00 	li      r0,0                                   
ffc0bf2c:	40 a2 00 74 	bne+    ffc0bfa0 <_Thread_Restart+0x94>        
                                                                      
    _Thread_Set_transient( the_thread );                              
ffc0bf30:	90 81 00 08 	stw     r4,8(r1)                               
ffc0bf34:	90 a1 00 0c 	stw     r5,12(r1)                              
ffc0bf38:	48 00 01 f5 	bl      ffc0c12c <_Thread_Set_transient>       
                                                                      
    _Thread_Reset( the_thread, pointer_argument, numeric_argument );  
ffc0bf3c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0bf40:	80 81 00 08 	lwz     r4,8(r1)                               
ffc0bf44:	80 a1 00 0c 	lwz     r5,12(r1)                              
ffc0bf48:	48 00 39 89 	bl      ffc0f8d0 <_Thread_Reset>               
                                                                      
    _Thread_Load_environment( the_thread );                           
ffc0bf4c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0bf50:	48 00 35 7d 	bl      ffc0f4cc <_Thread_Load_environment>    
                                                                      
    _Thread_Ready( the_thread );                                      
ffc0bf54:	7f e3 fb 78 	mr      r3,r31                                 
ffc0bf58:	48 00 38 9d 	bl      ffc0f7f4 <_Thread_Ready>               
                                                                      
    _User_extensions_Thread_restart( the_thread );                    
ffc0bf5c:	7f e3 fb 78 	mr      r3,r31                                 
ffc0bf60:	48 00 0a 51 	bl      ffc0c9b0 <_User_extensions_Thread_restart>
                                                                      
    if ( _Thread_Is_executing ( the_thread ) )                        
ffc0bf64:	3d 20 00 00 	lis     r9,0                                   
ffc0bf68:	81 29 27 98 	lwz     r9,10136(r9)                           
ffc0bf6c:	38 00 00 01 	li      r0,1                                   
ffc0bf70:	7f 9f 48 00 	cmpw    cr7,r31,r9                             
ffc0bf74:	40 be 00 2c 	bne+    cr7,ffc0bfa0 <_Thread_Restart+0x94>    
 */                                                                   
                                                                      
RTEMS_INLINE_ROUTINE void _Thread_Restart_self( void )                
{                                                                     
#if ( CPU_HARDWARE_FP == TRUE ) || ( CPU_SOFTWARE_FP == TRUE )        
  if ( _Thread_Executing->fp_context != NULL )                        
ffc0bf78:	80 1f 01 38 	lwz     r0,312(r31)                            
ffc0bf7c:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc0bf80:	41 9e 00 0c 	beq-    cr7,ffc0bf8c <_Thread_Restart+0x80>    
    _Context_Restore_fp( &_Thread_Executing->fp_context );            
ffc0bf84:	38 7f 01 38 	addi    r3,r31,312                             
ffc0bf88:	48 01 2d 99 	bl      ffc1ed20 <_CPU_Context_restore_fp>     
#endif                                                                
                                                                      
  _CPU_Context_Restart_self( &_Thread_Executing->Registers );         
ffc0bf8c:	3d 20 00 00 	lis     r9,0                                   
ffc0bf90:	80 69 27 98 	lwz     r3,10136(r9)                           
ffc0bf94:	38 63 00 d8 	addi    r3,r3,216                              
ffc0bf98:	48 01 2f 49 	bl      ffc1eee0 <_CPU_Context_restore>        
ffc0bf9c:	38 00 00 01 	li      r0,1                                   <== NOT EXECUTED
                                                                      
    return true;                                                      
  }                                                                   
                                                                      
  return false;                                                       
}                                                                     
ffc0bfa0:	7c 03 03 78 	mr      r3,r0                                  
ffc0bfa4:	80 01 00 1c 	lwz     r0,28(r1)                              
ffc0bfa8:	83 e1 00 14 	lwz     r31,20(r1)                             
ffc0bfac:	38 21 00 18 	addi    r1,r1,24                               
ffc0bfb0:	7c 08 03 a6 	mtlr    r0                                     
ffc0bfb4:	4e 80 00 20 	blr                                            
                                                                      
ffc0ab48 <_Thread_queue_Enqueue_priority>:                            
  Priority_Control     priority;                                      
  States_Control       block_state;                                   
                                                                      
  _Chain_Initialize_empty( &the_thread->Wait.Block2n );               
                                                                      
  priority     = the_thread->current_priority;                        
ffc0ab48:	80 04 00 14 	lwz     r0,20(r4)                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
ffc0ab4c:	39 04 00 3c 	addi    r8,r4,60                               
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (     
  Thread_queue_Control *the_thread_queue,                             
  Thread_Control       *the_thread,                                   
  ISR_Level            *level_p                                       
)                                                                     
{                                                                     
ffc0ab50:	94 21 ff f0 	stwu    r1,-16(r1)                             
  the_chain->permanent_null = NULL;                                   
  the_chain->last           = _Chain_Head(the_chain);                 
ffc0ab54:	39 64 00 38 	addi    r11,r4,56                              
  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 ) )                  
ffc0ab58:	70 09 00 20 	andi.   r9,r0,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 ];  
ffc0ab5c:	54 0a d1 be 	rlwinm  r10,r0,26,6,31                         
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
ffc0ab60:	91 04 00 38 	stw     r8,56(r4)                              
ffc0ab64:	1d 4a 00 0c 	mulli   r10,r10,12                             
Thread_blocking_operation_States _Thread_queue_Enqueue_priority (     
  Thread_queue_Control *the_thread_queue,                             
  Thread_Control       *the_thread,                                   
  ISR_Level            *level_p                                       
)                                                                     
{                                                                     
ffc0ab68:	93 e1 00 0c 	stw     r31,12(r1)                             
  the_chain->permanent_null = NULL;                                   
ffc0ab6c:	39 00 00 00 	li      r8,0                                   
  _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 ];  
  block_state  = the_thread_queue->state;                             
ffc0ab70:	81 23 00 38 	lwz     r9,56(r3)                              
                                                                      
  _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 ];  
ffc0ab74:	7d 43 52 14 	add     r10,r3,r10                             
ffc0ab78:	91 04 00 3c 	stw     r8,60(r4)                              
  the_chain->last           = _Chain_Head(the_chain);                 
ffc0ab7c:	91 64 00 40 	stw     r11,64(r4)                             
  block_state  = the_thread_queue->state;                             
                                                                      
  if ( _Thread_queue_Is_reverse_search( priority ) )                  
ffc0ab80:	40 82 00 98 	bne-    ffc0ac18 <_Thread_queue_Enqueue_priority+0xd0>
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
ffc0ab84:	38 ca 00 04 	addi    r6,r10,4                               
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc0ab88:	7d 00 00 a6 	mfmsr   r8                                     
ffc0ab8c:	7d 70 42 a6 	mfsprg  r11,0                                  
ffc0ab90:	7d 0b 58 78 	andc    r11,r8,r11                             
ffc0ab94:	7d 60 01 24 	mtmsr   r11                                    
    goto restart_reverse_search;                                      
                                                                      
restart_forward_search:                                               
  search_priority = PRIORITY_MINIMUM - 1;                             
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->first;                   
ffc0ab98:	38 e0 ff ff 	li      r7,-1                                  
ffc0ab9c:	81 6a 00 00 	lwz     r11,0(r10)                             
  while ( !_Chain_Is_tail( header, (Chain_Node *)search_thread ) ) {  
ffc0aba0:	48 00 00 34 	b       ffc0abd4 <_Thread_queue_Enqueue_priority+0x8c>
    search_priority = search_thread->current_priority;                
ffc0aba4:	80 eb 00 14 	lwz     r7,20(r11)                             
    if ( priority <= search_priority )                                
ffc0aba8:	7f 80 38 40 	cmplw   cr7,r0,r7                              
ffc0abac:	40 9d 00 30 	ble-    cr7,ffc0abdc <_Thread_queue_Enqueue_priority+0x94>
                                                                      
static inline void ppc_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t current_level;                                             
                                                                      
  asm volatile (                                                      
ffc0abb0:	7d 80 00 a6 	mfmsr   r12                                    
ffc0abb4:	7d 00 01 24 	mtmsr   r8                                     
ffc0abb8:	7d 80 01 24 	mtmsr   r12                                    
    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) ) {
ffc0abbc:	81 8b 00 10 	lwz     r12,16(r11)                            
ffc0abc0:	7d 3f 60 39 	and.    r31,r9,r12                             
ffc0abc4:	40 a2 00 0c 	bne+    ffc0abd0 <_Thread_queue_Enqueue_priority+0x88>
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc0abc8:	7d 00 01 24 	mtmsr   r8                                     <== NOT EXECUTED
ffc0abcc:	4b ff ff bc 	b       ffc0ab88 <_Thread_queue_Enqueue_priority+0x40><== NOT EXECUTED
      _ISR_Enable( level );                                           
      goto restart_forward_search;                                    
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
ffc0abd0:	81 6b 00 00 	lwz     r11,0(r11)                             
                                                                      
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 ) ) {  
ffc0abd4:	7f 8b 30 00 	cmpw    cr7,r11,r6                             
ffc0abd8:	40 9e ff cc 	bne+    cr7,ffc0aba4 <_Thread_queue_Enqueue_priority+0x5c>
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
ffc0abdc:	81 43 00 30 	lwz     r10,48(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 ) ) {  
ffc0abe0:	7d 09 43 78 	mr      r9,r8                                  
    }                                                                 
    search_thread =                                                   
       (Thread_Control *)search_thread->Object.Node.next;             
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
ffc0abe4:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0abe8:	40 be 00 f8 	bne+    cr7,ffc0ace0 <_Thread_queue_Enqueue_priority+0x198>
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
                                                                      
  if ( priority == search_priority )                                  
ffc0abec:	7f 80 38 00 	cmpw    cr7,r0,r7                              
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
ffc0abf0:	38 00 00 00 	li      r0,0                                   
ffc0abf4:	90 03 00 30 	stw     r0,48(r3)                              
                                                                      
  if ( priority == search_priority )                                  
ffc0abf8:	41 9e 00 c4 	beq-    cr7,ffc0acbc <_Thread_queue_Enqueue_priority+0x174>
    goto equal_priority;                                              
                                                                      
  search_node   = (Chain_Node *) search_thread;                       
  previous_node = search_node->previous;                              
ffc0abfc:	81 2b 00 04 	lwz     r9,4(r11)                              
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
ffc0ac00:	91 64 00 00 	stw     r11,0(r4)                              
  the_node->previous     = previous_node;                             
ffc0ac04:	91 24 00 04 	stw     r9,4(r4)                               
  previous_node->next    = the_node;                                  
  search_node->previous  = the_node;                                  
  the_thread->Wait.queue = the_thread_queue;                          
ffc0ac08:	90 64 00 44 	stw     r3,68(r4)                              
  previous_node = search_node->previous;                              
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
  the_node->previous     = previous_node;                             
  previous_node->next    = the_node;                                  
ffc0ac0c:	90 89 00 00 	stw     r4,0(r9)                               
  search_node->previous  = the_node;                                  
ffc0ac10:	90 8b 00 04 	stw     r4,4(r11)                              
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
ffc0ac14:	48 00 00 9c 	b       ffc0acb0 <_Thread_queue_Enqueue_priority+0x168>
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
                                                                      
restart_reverse_search:                                               
  search_priority     = PRIORITY_MAXIMUM + 1;                         
ffc0ac18:	3c c0 00 00 	lis     r6,0                                   
ffc0ac1c:	38 c6 26 64 	addi    r6,r6,9828                             
ffc0ac20:	88 e6 00 00 	lbz     r7,0(r6)                               
ffc0ac24:	38 e7 00 01 	addi    r7,r7,1                                
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc0ac28:	7d 00 00 a6 	mfmsr   r8                                     
ffc0ac2c:	7d 70 42 a6 	mfsprg  r11,0                                  
ffc0ac30:	7d 0b 58 78 	andc    r11,r8,r11                             
ffc0ac34:	7d 60 01 24 	mtmsr   r11                                    
                                                                      
  _ISR_Disable( level );                                              
  search_thread = (Thread_Control *) header->last;                    
ffc0ac38:	81 6a 00 08 	lwz     r11,8(r10)                             
  while ( !_Chain_Is_head( header, (Chain_Node *)search_thread ) ) {  
ffc0ac3c:	48 00 00 34 	b       ffc0ac70 <_Thread_queue_Enqueue_priority+0x128>
    search_priority = search_thread->current_priority;                
ffc0ac40:	80 eb 00 14 	lwz     r7,20(r11)                             
    if ( priority >= search_priority )                                
ffc0ac44:	7f 80 38 40 	cmplw   cr7,r0,r7                              
ffc0ac48:	40 9c 00 30 	bge-    cr7,ffc0ac78 <_Thread_queue_Enqueue_priority+0x130>
                                                                      
static inline void ppc_interrupt_flash( uint32_t level )              
{                                                                     
  uint32_t current_level;                                             
                                                                      
  asm volatile (                                                      
ffc0ac4c:	7d 80 00 a6 	mfmsr   r12                                    
ffc0ac50:	7d 00 01 24 	mtmsr   r8                                     
ffc0ac54:	7d 80 01 24 	mtmsr   r12                                    
    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) ) {
ffc0ac58:	81 8b 00 10 	lwz     r12,16(r11)                            
ffc0ac5c:	7d 3f 60 39 	and.    r31,r9,r12                             
ffc0ac60:	40 a2 00 0c 	bne+    ffc0ac6c <_Thread_queue_Enqueue_priority+0x124>
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc0ac64:	7d 00 01 24 	mtmsr   r8                                     
ffc0ac68:	4b ff ff b8 	b       ffc0ac20 <_Thread_queue_Enqueue_priority+0xd8>
      _ISR_Enable( level );                                           
      goto restart_reverse_search;                                    
    }                                                                 
    search_thread = (Thread_Control *)                                
ffc0ac6c:	81 6b 00 04 	lwz     r11,4(r11)                             
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 ) ) {  
ffc0ac70:	7f 8b 50 00 	cmpw    cr7,r11,r10                            
ffc0ac74:	40 9e ff cc 	bne+    cr7,ffc0ac40 <_Thread_queue_Enqueue_priority+0xf8>
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
ffc0ac78:	81 43 00 30 	lwz     r10,48(r3)                             
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 ) ) {  
ffc0ac7c:	7d 09 43 78 	mr      r9,r8                                  
    }                                                                 
    search_thread = (Thread_Control *)                                
                         search_thread->Object.Node.previous;         
  }                                                                   
                                                                      
  if ( the_thread_queue->sync_state !=                                
ffc0ac80:	2f 8a 00 01 	cmpwi   cr7,r10,1                              
ffc0ac84:	40 be 00 5c 	bne+    cr7,ffc0ace0 <_Thread_queue_Enqueue_priority+0x198>
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
                                                                      
  if ( priority == search_priority )                                  
ffc0ac88:	7f 80 38 00 	cmpw    cr7,r0,r7                              
                                                                      
  if ( the_thread_queue->sync_state !=                                
       THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED )                   
    goto synchronize;                                                 
                                                                      
  the_thread_queue->sync_state = THREAD_BLOCKING_OPERATION_SYNCHRONIZED;
ffc0ac8c:	38 00 00 00 	li      r0,0                                   
ffc0ac90:	90 03 00 30 	stw     r0,48(r3)                              
                                                                      
  if ( priority == search_priority )                                  
ffc0ac94:	41 9e 00 28 	beq-    cr7,ffc0acbc <_Thread_queue_Enqueue_priority+0x174>
    goto equal_priority;                                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
ffc0ac98:	81 2b 00 00 	lwz     r9,0(r11)                              
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
  the_node->previous      = search_node;                              
ffc0ac9c:	91 64 00 04 	stw     r11,4(r4)                              
                                                                      
  search_node = (Chain_Node *) search_thread;                         
  next_node   = search_node->next;                                    
  the_node    = (Chain_Node *) the_thread;                            
                                                                      
  the_node->next          = next_node;                                
ffc0aca0:	91 24 00 00 	stw     r9,0(r4)                               
  the_node->previous      = search_node;                              
  search_node->next       = the_node;                                 
  next_node->previous    = the_node;                                  
  the_thread->Wait.queue = the_thread_queue;                          
ffc0aca4:	90 64 00 44 	stw     r3,68(r4)                              
  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;                                 
ffc0aca8:	90 8b 00 00 	stw     r4,0(r11)                              
  next_node->previous    = the_node;                                  
ffc0acac:	90 89 00 04 	stw     r4,4(r9)                               
ffc0acb0:	7d 00 01 24 	mtmsr   r8                                     
ffc0acb4:	38 60 00 01 	li      r3,1                                   
  the_thread->Wait.queue = the_thread_queue;                          
  _ISR_Enable( level );                                               
  return THREAD_BLOCKING_OPERATION_NOTHING_HAPPENED;                  
ffc0acb8:	48 00 00 30 	b       ffc0ace8 <_Thread_queue_Enqueue_priority+0x1a0>
ffc0acbc:	39 6b 00 3c 	addi    r11,r11,60                             
                                                                      
  the_node->next         = search_node;                               
  the_node->previous     = previous_node;                             
  previous_node->next    = the_node;                                  
  search_node->previous  = the_node;                                  
  the_thread->Wait.queue = the_thread_queue;                          
ffc0acc0:	90 64 00 44 	stw     r3,68(r4)                              
  _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;                              
ffc0acc4:	81 4b 00 04 	lwz     r10,4(r11)                             
  the_node      = (Chain_Node *) the_thread;                          
                                                                      
  the_node->next         = search_node;                               
ffc0acc8:	91 64 00 00 	stw     r11,0(r4)                              
  the_node->previous     = previous_node;                             
ffc0accc:	91 44 00 04 	stw     r10,4(r4)                              
  previous_node->next    = the_node;                                  
ffc0acd0:	90 8a 00 00 	stw     r4,0(r10)                              
  search_node->previous  = the_node;                                  
ffc0acd4:	90 8b 00 04 	stw     r4,4(r11)                              
ffc0acd8:	7d 20 01 24 	mtmsr   r9                                     
ffc0acdc:	4b ff ff d8 	b       ffc0acb4 <_Thread_queue_Enqueue_priority+0x16c>
   *  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;                                                   
ffc0ace0:	91 25 00 00 	stw     r9,0(r5)                               
  return the_thread_queue->sync_state;                                
ffc0ace4:	80 63 00 30 	lwz     r3,48(r3)                              
}                                                                     
ffc0ace8:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0acec:	38 21 00 10 	addi    r1,r1,16                               
ffc0acf0:	4e 80 00 20 	blr                                            
                                                                      
ffc19d0c <_Timer_server_Body>:                                        
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19d0c:	94 21 ff 98 	stwu    r1,-104(r1)                            
ffc19d10:	7c 08 02 a6 	mflr    r0                                     
ffc19d14:	92 01 00 28 	stw     r16,40(r1)                             
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
  the_chain->permanent_null = NULL;                                   
  the_chain->last           = _Chain_Head(the_chain);                 
ffc19d18:	3a 01 00 08 	addi    r16,r1,8                               
ffc19d1c:	90 01 00 6c 	stw     r0,108(r1)                             
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
  the_chain->permanent_null = NULL;                                   
ffc19d20:	38 00 00 00 	li      r0,0                                   
ffc19d24:	93 01 00 48 	stw     r24,72(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Tail(                         
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
   return (Chain_Node *) &the_chain->permanent_null;                  
ffc19d28:	3b 01 00 0c 	addi    r24,r1,12                              
ffc19d2c:	93 61 00 54 	stw     r27,84(r1)                             
ffc19d30:	3b 61 00 18 	addi    r27,r1,24                              
ffc19d34:	93 c1 00 60 	stw     r30,96(r1)                             
ffc19d38:	3b c1 00 14 	addi    r30,r1,20                              
ffc19d3c:	92 21 00 2c 	stw     r17,44(r1)                             
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
ffc19d40:	3e 20 00 00 	lis     r17,0                                  
ffc19d44:	3a 31 28 7c 	addi    r17,r17,10364                          
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19d48:	92 41 00 30 	stw     r18,48(r1)                             
static void _Timer_server_Process_tod_watchdogs(                      
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = (Watchdog_Interval) _TOD_Seconds_since_epoch();
ffc19d4c:	3e 40 00 00 	lis     r18,0                                  
ffc19d50:	3a 52 28 44 	addi    r18,r18,10308                          
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19d54:	93 21 00 4c 	stw     r25,76(r1)                             
ffc19d58:	3f 20 00 00 	lis     r25,0                                  
ffc19d5c:	3b 39 28 24 	addi    r25,r25,10276                          
ffc19d60:	93 a1 00 5c 	stw     r29,92(r1)                             
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
  the_chain->permanent_null = NULL;                                   
ffc19d64:	90 01 00 18 	stw     r0,24(r1)                              
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
ffc19d68:	93 01 00 08 	stw     r24,8(r1)                              
  the_chain->permanent_null = NULL;                                   
ffc19d6c:	90 01 00 0c 	stw     r0,12(r1)                              
  the_chain->last           = _Chain_Head(the_chain);                 
ffc19d70:	92 01 00 10 	stw     r16,16(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE void _Chain_Initialize_empty(                    
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  the_chain->first          = _Chain_Tail(the_chain);                 
ffc19d74:	93 61 00 14 	stw     r27,20(r1)                             
  the_chain->permanent_null = NULL;                                   
  the_chain->last           = _Chain_Head(the_chain);                 
ffc19d78:	93 c1 00 1c 	stw     r30,28(r1)                             
ffc19d7c:	92 61 00 34 	stw     r19,52(r1)                             
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
ffc19d80:	3a 63 00 08 	addi    r19,r3,8                               
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19d84:	92 81 00 38 	stw     r20,56(r1)                             
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
ffc19d88:	3a 83 00 40 	addi    r20,r3,64                              
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19d8c:	92 a1 00 3c 	stw     r21,60(r1)                             
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
ffc19d90:	3a a0 00 00 	li      r21,0                                  
ffc19d94:	92 c1 00 40 	stw     r22,64(r1)                             
         *  the active flag of the timer server is true.              
         */                                                           
        (*watchdog->routine)( watchdog->id, watchdog->user_data );    
      }                                                               
    } else {                                                          
      ts->active = false;                                             
ffc19d98:	3a c0 00 00 	li      r22,0                                  
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19d9c:	92 e1 00 44 	stw     r23,68(r1)                             
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
        _Timer_server_Reset_interval_system_watchdog( ts );           
        _Timer_server_Reset_tod_system_watchdog( ts );                
      _Thread_Enable_dispatch();                                      
                                                                      
      ts->active = true;                                              
ffc19da0:	3a e0 00 01 	li      r23,1                                  
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19da4:	93 41 00 50 	stw     r26,80(r1)                             
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc19da8:	3b 43 00 30 	addi    r26,r3,48                              
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19dac:	93 81 00 58 	stw     r28,88(r1)                             
    /*                                                                
     *  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 );
ffc19db0:	3b 83 00 68 	addi    r28,r3,104                             
 *  @a arg points to the corresponding timer server control block.    
 */                                                                   
static rtems_task _Timer_server_Body(                                 
  rtems_task_argument arg                                             
)                                                                     
{                                                                     
ffc19db4:	93 e1 00 64 	stw     r31,100(r1)                            
ffc19db8:	7c 7f 1b 78 	mr      r31,r3                                 
{                                                                     
  /*                                                                  
   *  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;                                    
ffc19dbc:	92 1f 00 78 	stw     r16,120(r31)                           
static void _Timer_server_Process_interval_watchdogs(                 
  Timer_server_Watchdogs *watchdogs,                                  
  Chain_Control *fire_chain                                           
)                                                                     
{                                                                     
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
ffc19dc0:	80 11 00 00 	lwz     r0,0(r17)                              
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc19dc4:	7f c5 f3 78 	mr      r5,r30                                 
  Watchdog_Interval snapshot = _Watchdog_Ticks_since_boot;            
                                                                      
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
ffc19dc8:	80 9f 00 3c 	lwz     r4,60(r31)                             
                                                                      
  watchdogs->last_snapshot = snapshot;                                
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc19dcc:	7f 43 d3 78 	mr      r3,r26                                 
  /*                                                                  
   *  We assume adequate unsigned arithmetic here.                    
   */                                                                 
  Watchdog_Interval delta = snapshot - watchdogs->last_snapshot;      
                                                                      
  watchdogs->last_snapshot = snapshot;                                
ffc19dd0:	90 1f 00 3c 	stw     r0,60(r31)                             
                                                                      
  _Watchdog_Adjust_to_chain( &watchdogs->Chain, delta, fire_chain );  
ffc19dd4:	7c 84 00 50 	subf    r4,r4,r0                               
ffc19dd8:	48 00 4d 61 	bl      ffc1eb38 <_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();
ffc19ddc:	83 b2 00 00 	lwz     r29,0(r18)                             
  Watchdog_Interval last_snapshot = watchdogs->last_snapshot;         
ffc19de0:	80 bf 00 74 	lwz     r5,116(r31)                            
  /*                                                                  
   *  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 ) {                                   
ffc19de4:	7f 9d 28 40 	cmplw   cr7,r29,r5                             
ffc19de8:	40 bd 00 18 	ble+    cr7,ffc19e00 <_Timer_server_Body+0xf4> 
    /*                                                                
     *  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 );
ffc19dec:	7c 85 e8 50 	subf    r4,r5,r29                              
ffc19df0:	7f 83 e3 78 	mr      r3,r28                                 
ffc19df4:	7f c5 f3 78 	mr      r5,r30                                 
ffc19df8:	48 00 4d 41 	bl      ffc1eb38 <_Watchdog_Adjust_to_chain>   
ffc19dfc:	48 00 00 18 	b       ffc19e14 <_Timer_server_Body+0x108>    
                                                                      
  } else if ( snapshot < last_snapshot ) {                            
ffc19e00:	40 bc 00 14 	bge+    cr7,ffc19e14 <_Timer_server_Body+0x108>
     /*                                                               
      *  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 ); 
ffc19e04:	7c bd 28 50 	subf    r5,r29,r5                              
ffc19e08:	7f 83 e3 78 	mr      r3,r28                                 
ffc19e0c:	38 80 00 01 	li      r4,1                                   
ffc19e10:	48 00 4c 45 	bl      ffc1ea54 <_Watchdog_Adjust>            
  }                                                                   
                                                                      
  watchdogs->last_snapshot = snapshot;                                
ffc19e14:	93 bf 00 74 	stw     r29,116(r31)                           
}                                                                     
                                                                      
static void _Timer_server_Process_insertions( Timer_server_Control *ts )
{                                                                     
  while ( true ) {                                                    
    Timer_Control *timer = (Timer_Control *) _Chain_Get( ts->insert_chain );
ffc19e18:	80 7f 00 78 	lwz     r3,120(r31)                            
ffc19e1c:	48 00 0b 1d 	bl      ffc1a938 <_Chain_Get>                  
                                                                      
    if ( timer == NULL ) {                                            
ffc19e20:	7c 64 1b 79 	mr.     r4,r3                                  
ffc19e24:	41 82 00 34 	beq-    ffc19e58 <_Timer_server_Body+0x14c>    
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
ffc19e28:	80 04 00 38 	lwz     r0,56(r4)                              
ffc19e2c:	2f 00 00 01 	cmpwi   cr6,r0,1                               
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
ffc19e30:	2f 80 00 03 	cmpwi   cr7,r0,3                               
static void _Timer_server_Insert_timer(                               
  Timer_server_Control *ts,                                           
  Timer_Control *timer                                                
)                                                                     
{                                                                     
  if ( timer->the_class == TIMER_INTERVAL_ON_TASK ) {                 
ffc19e34:	40 ba 00 10 	bne+    cr6,ffc19e44 <_Timer_server_Body+0x138>
    _Watchdog_Insert( &ts->Interval_watchdogs.Chain, &timer->Ticker );
ffc19e38:	38 84 00 10 	addi    r4,r4,16                               
ffc19e3c:	7f 43 d3 78 	mr      r3,r26                                 
ffc19e40:	48 00 00 10 	b       ffc19e50 <_Timer_server_Body+0x144>    
  } else if ( timer->the_class == TIMER_TIME_OF_DAY_ON_TASK ) {       
ffc19e44:	40 9e ff d4 	bne+    cr7,ffc19e18 <_Timer_server_Body+0x10c>
    _Watchdog_Insert( &ts->TOD_watchdogs.Chain, &timer->Ticker );     
ffc19e48:	38 84 00 10 	addi    r4,r4,16                               
ffc19e4c:	7f 83 e3 78 	mr      r3,r28                                 
ffc19e50:	48 00 4d a1 	bl      ffc1ebf0 <_Watchdog_Insert>            
ffc19e54:	4b ff ff c4 	b       ffc19e18 <_Timer_server_Body+0x10c>    
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc19e58:	7c 00 00 a6 	mfmsr   r0                                     
ffc19e5c:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc19e60:	7c 09 48 78 	andc    r9,r0,r9                               
ffc19e64:	7d 20 01 24 	mtmsr   r9                                     
     *  body loop.                                                    
     */                                                               
    _Timer_server_Process_insertions( ts );                           
                                                                      
    _ISR_Disable( level );                                            
    if ( _Chain_Is_empty( insert_chain ) ) {                          
ffc19e68:	81 21 00 08 	lwz     r9,8(r1)                               
ffc19e6c:	7f 89 c0 00 	cmpw    cr7,r9,r24                             
ffc19e70:	40 be 00 1c 	bne+    cr7,ffc19e8c <_Timer_server_Body+0x180>
      ts->insert_chain = NULL;                                        
ffc19e74:	90 9f 00 78 	stw     r4,120(r31)                            
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc19e78:	7c 00 01 24 	mtmsr   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 ) ) {                          
ffc19e7c:	80 01 00 14 	lwz     r0,20(r1)                              
ffc19e80:	7f 80 d8 00 	cmpw    cr7,r0,r27                             
ffc19e84:	40 be 00 10 	bne+    cr7,ffc19e94 <_Timer_server_Body+0x188>
ffc19e88:	48 00 00 64 	b       ffc19eec <_Timer_server_Body+0x1e0>    
ffc19e8c:	7c 00 01 24 	mtmsr   r0                                     <== NOT EXECUTED
ffc19e90:	4b ff ff 30 	b       ffc19dc0 <_Timer_server_Body+0xb4>     <== NOT EXECUTED
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc19e94:	7c 00 00 a6 	mfmsr   r0                                     
ffc19e98:	7d 30 42 a6 	mfsprg  r9,0                                   
ffc19e9c:	7c 09 48 78 	andc    r9,r0,r9                               
ffc19ea0:	7d 20 01 24 	mtmsr   r9                                     
 */                                                                   
RTEMS_INLINE_ROUTINE bool _Chain_Is_empty(                            
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  return (the_chain->first == _Chain_Tail(the_chain));                
ffc19ea4:	81 21 00 14 	lwz     r9,20(r1)                              
 */                                                                   
RTEMS_INLINE_ROUTINE Chain_Node *_Chain_Get_unprotected(              
  Chain_Control *the_chain                                            
)                                                                     
{                                                                     
  if ( !_Chain_Is_empty(the_chain))                                   
ffc19ea8:	7f 09 d8 00 	cmpw    cr6,r9,r27                             
         *  It is essential that interrupts are disable here since an interrupt
         *  service routine may remove a watchdog from the chain.     
         */                                                           
        _ISR_Disable( level );                                        
        watchdog = (Watchdog_Control *) _Chain_Get_unprotected( &fire_chain );
        if ( watchdog != NULL ) {                                     
ffc19eac:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc19eb0:	41 9a 00 34 	beq-    cr6,ffc19ee4 <_Timer_server_Body+0x1d8>
{                                                                     
  Chain_Node  *return_node;                                           
  Chain_Node  *new_first;                                             
                                                                      
  return_node         = the_chain->first;                             
  new_first           = return_node->next;                            
ffc19eb4:	81 69 00 00 	lwz     r11,0(r9)                              
  the_chain->first    = new_first;                                    
ffc19eb8:	91 61 00 14 	stw     r11,20(r1)                             
  new_first->previous = _Chain_Head(the_chain);                       
ffc19ebc:	93 cb 00 04 	stw     r30,4(r11)                             
ffc19ec0:	41 9e 00 24 	beq-    cr7,ffc19ee4 <_Timer_server_Body+0x1d8>
          watchdog->state = WATCHDOG_INACTIVE;                        
ffc19ec4:	92 a9 00 08 	stw     r21,8(r9)                              
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc19ec8:	7c 00 01 24 	mtmsr   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 );    
ffc19ecc:	80 09 00 1c 	lwz     r0,28(r9)                              
ffc19ed0:	80 89 00 24 	lwz     r4,36(r9)                              
ffc19ed4:	80 69 00 20 	lwz     r3,32(r9)                              
ffc19ed8:	7c 09 03 a6 	mtctr   r0                                     
ffc19edc:	4e 80 04 21 	bctrl                                          
      }                                                               
ffc19ee0:	4b ff ff b4 	b       ffc19e94 <_Timer_server_Body+0x188>    
ffc19ee4:	7c 00 01 24 	mtmsr   r0                                     
ffc19ee8:	4b ff fe d4 	b       ffc19dbc <_Timer_server_Body+0xb0>     
    } else {                                                          
      ts->active = false;                                             
ffc19eec:	9a df 00 7c 	stb     r22,124(r31)                           
ffc19ef0:	81 39 00 00 	lwz     r9,0(r25)                              
ffc19ef4:	38 09 00 01 	addi    r0,r9,1                                
ffc19ef8:	90 19 00 00 	stw     r0,0(r25)                              
                                                                      
      /*                                                              
       *  Block until there is something to do.                       
       */                                                             
      _Thread_Disable_dispatch();                                     
        _Thread_Set_state( ts->thread, STATES_DELAYING );             
ffc19efc:	80 7f 00 00 	lwz     r3,0(r31)                              
ffc19f00:	38 80 00 08 	li      r4,8                                   
ffc19f04:	48 00 3f bd 	bl      ffc1dec0 <_Thread_Set_state>           
        _Timer_server_Reset_interval_system_watchdog( ts );           
ffc19f08:	7f e3 fb 78 	mr      r3,r31                                 
ffc19f0c:	4b ff fd 01 	bl      ffc19c0c <_Timer_server_Reset_interval_system_watchdog>
        _Timer_server_Reset_tod_system_watchdog( ts );                
ffc19f10:	7f e3 fb 78 	mr      r3,r31                                 
ffc19f14:	4b ff fd 79 	bl      ffc19c8c <_Timer_server_Reset_tod_system_watchdog>
      _Thread_Enable_dispatch();                                      
ffc19f18:	48 00 33 79 	bl      ffc1d290 <_Thread_Enable_dispatch>     
                                                                      
      ts->active = true;                                              
ffc19f1c:	9a ff 00 7c 	stb     r23,124(r31)                           
                                                                      
static void _Timer_server_Stop_interval_system_watchdog(              
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->Interval_watchdogs.System_watchdog );        
ffc19f20:	7e 63 9b 78 	mr      r3,r19                                 
ffc19f24:	48 00 4e 25 	bl      ffc1ed48 <_Watchdog_Remove>            
                                                                      
static void _Timer_server_Stop_tod_system_watchdog(                   
  Timer_server_Control *ts                                            
)                                                                     
{                                                                     
  _Watchdog_Remove( &ts->TOD_watchdogs.System_watchdog );             
ffc19f28:	7e 83 a3 78 	mr      r3,r20                                 
ffc19f2c:	48 00 4e 1d 	bl      ffc1ed48 <_Watchdog_Remove>            
ffc19f30:	4b ff fe 8c 	b       ffc19dbc <_Timer_server_Body+0xb0>     
                                                                      
ffc0a380 <rtems_io_register_driver>:                                  
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
ffc0a380:	94 21 ff f0 	stwu    r1,-16(r1)                             
ffc0a384:	7c 08 02 a6 	mflr    r0                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
ffc0a388:	3d 20 00 00 	lis     r9,0                                   
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
ffc0a38c:	90 01 00 14 	stw     r0,20(r1)                              
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
ffc0a390:	80 09 27 74 	lwz     r0,10100(r9)                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
ffc0a394:	3d 20 00 00 	lis     r9,0                                   
rtems_status_code rtems_io_register_driver(                           
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
ffc0a398:	93 e1 00 0c 	stw     r31,12(r1)                             
ffc0a39c:	7c 7f 1b 78 	mr      r31,r3                                 
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
ffc0a3a0:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc0a3a4:	38 60 00 12 	li      r3,18                                  
  rtems_device_major_number         major,                            
  const rtems_driver_address_table *driver_table,                     
  rtems_device_major_number        *registered_major                  
)                                                                     
{                                                                     
  rtems_device_major_number major_limit = _IO_Number_of_drivers;      
ffc0a3a8:	80 09 27 c0 	lwz     r0,10176(r9)                           
                                                                      
  if ( rtems_interrupt_is_in_progress() )                             
ffc0a3ac:	40 9e 01 40 	bne-    cr7,ffc0a4ec <rtems_io_register_driver+0x16c>
    return RTEMS_CALLED_FROM_ISR;                                     
                                                                      
  if ( registered_major == NULL )                                     
ffc0a3b0:	2f 85 00 00 	cmpwi   cr7,r5,0                               
ffc0a3b4:	41 9e 01 34 	beq-    cr7,ffc0a4e8 <rtems_io_register_driver+0x168>
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
                                                                      
  if ( driver_table == NULL )                                         
ffc0a3b8:	2f 84 00 00 	cmpwi   cr7,r4,0                               
                                                                      
  if ( registered_major == NULL )                                     
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  /* Set it to an invalid value */                                    
  *registered_major = major_limit;                                    
ffc0a3bc:	90 05 00 00 	stw     r0,0(r5)                               
                                                                      
  if ( driver_table == NULL )                                         
ffc0a3c0:	41 9e 01 28 	beq-    cr7,ffc0a4e8 <rtems_io_register_driver+0x168>
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0a3c4:	81 24 00 00 	lwz     r9,0(r4)                               
ffc0a3c8:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a3cc:	40 be 01 34 	bne+    cr7,ffc0a500 <rtems_io_register_driver+0x180>
ffc0a3d0:	81 24 00 04 	lwz     r9,4(r4)                               
ffc0a3d4:	2f 89 00 00 	cmpwi   cr7,r9,0                               
ffc0a3d8:	40 be 01 28 	bne+    cr7,ffc0a500 <rtems_io_register_driver+0x180>
ffc0a3dc:	48 00 01 0c 	b       ffc0a4e8 <rtems_io_register_driver+0x168>
	rtems_fatal_error_occurred( 99 );                                    
      }                                                               
    }                                                                 
  #endif                                                              
                                                                      
  _Thread_Dispatch_disable_level += 1;                                
ffc0a3e0:	3d 20 00 00 	lis     r9,0                                   
ffc0a3e4:	81 69 27 4c 	lwz     r11,10060(r9)                          
ffc0a3e8:	38 0b 00 01 	addi    r0,r11,1                               
ffc0a3ec:	90 09 27 4c 	stw     r0,10060(r9)                           
  if ( major >= major_limit )                                         
    return RTEMS_INVALID_NUMBER;                                      
                                                                      
  _Thread_Disable_dispatch();                                         
                                                                      
  if ( major == 0 ) {                                                 
ffc0a3f0:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc0a3f4:	3d 20 00 00 	lis     r9,0                                   
ffc0a3f8:	40 9e 00 58 	bne-    cr7,ffc0a450 <rtems_io_register_driver+0xd0>
                                                                      
static rtems_status_code rtems_io_obtain_major_number(                
  rtems_device_major_number *major                                    
)                                                                     
{                                                                     
  rtems_device_major_number n = _IO_Number_of_drivers;                
ffc0a3fc:	3d 60 00 00 	lis     r11,0                                  
ffc0a400:	81 29 27 c4 	lwz     r9,10180(r9)                           
ffc0a404:	81 6b 27 c0 	lwz     r11,10176(r11)                         
ffc0a408:	2f 8b 00 00 	cmpwi   cr7,r11,0                              
ffc0a40c:	38 0b 00 01 	addi    r0,r11,1                               
ffc0a410:	40 be 00 28 	bne+    cr7,ffc0a438 <rtems_io_register_driver+0xb8>
ffc0a414:	38 00 00 01 	li      r0,1                                   <== NOT EXECUTED
ffc0a418:	48 00 00 20 	b       ffc0a438 <rtems_io_register_driver+0xb8><== NOT EXECUTED
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0a41c:	81 49 00 00 	lwz     r10,0(r9)                              
ffc0a420:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0a424:	40 be 00 ec 	bne+    cr7,ffc0a510 <rtems_io_register_driver+0x190>
ffc0a428:	81 49 00 04 	lwz     r10,4(r9)                              
ffc0a42c:	2f 8a 00 00 	cmpwi   cr7,r10,0                              
ffc0a430:	40 be 00 e0 	bne+    cr7,ffc0a510 <rtems_io_register_driver+0x190>
ffc0a434:	48 00 00 0c 	b       ffc0a440 <rtems_io_register_driver+0xc0>
  rtems_device_major_number n = _IO_Number_of_drivers;                
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
ffc0a438:	34 00 ff ff 	addic.  r0,r0,-1                               
ffc0a43c:	40 82 ff e0 	bne+    ffc0a41c <rtems_io_register_driver+0x9c>
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
                                                                      
  if ( m != n )                                                       
ffc0a440:	7f 9f 58 00 	cmpw    cr7,r31,r11                            
    if ( rtems_io_is_empty_table( table ) )                           
      break;                                                          
  }                                                                   
                                                                      
  /* Assigns invalid value in case of failure */                      
  *major = m;                                                         
ffc0a444:	93 e5 00 00 	stw     r31,0(r5)                              
                                                                      
  if ( m != n )                                                       
ffc0a448:	40 be 00 48 	bne+    cr7,ffc0a490 <rtems_io_register_driver+0x110>
ffc0a44c:	48 00 00 d0 	b       ffc0a51c <rtems_io_register_driver+0x19c>
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
ffc0a450:	1c 1f 00 18 	mulli   r0,r31,24                              
ffc0a454:	81 29 27 c4 	lwz     r9,10180(r9)                           
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0a458:	7d 69 00 2e 	lwzx    r11,r9,r0                              
      _Thread_Enable_dispatch();                                      
      return sc;                                                      
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
ffc0a45c:	7d 29 02 14 	add     r9,r9,r0                               
                                                                      
static inline bool rtems_io_is_empty_table(                           
  const rtems_driver_address_table *table                             
)                                                                     
{                                                                     
  return table->initialization_entry == NULL && table->open_entry == NULL;
ffc0a460:	38 00 00 00 	li      r0,0                                   
ffc0a464:	2f 8b 00 00 	cmpwi   cr7,r11,0                              
ffc0a468:	40 be 00 10 	bne+    cr7,ffc0a478 <rtems_io_register_driver+0xf8>
ffc0a46c:	80 09 00 04 	lwz     r0,4(r9)                               
ffc0a470:	7c 00 00 34 	cntlzw  r0,r0                                  
ffc0a474:	54 00 d9 7e 	rlwinm  r0,r0,27,5,31                          
    }                                                                 
    major = *registered_major;                                        
  } else {                                                            
    rtems_driver_address_table *const table = _IO_Driver_address_table + major;
                                                                      
    if ( !rtems_io_is_empty_table( table ) ) {                        
ffc0a478:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc0a47c:	40 9e 00 10 	bne-    cr7,ffc0a48c <rtems_io_register_driver+0x10c>
      _Thread_Enable_dispatch();                                      
ffc0a480:	48 00 1f 71 	bl      ffc0c3f0 <_Thread_Enable_dispatch>     
ffc0a484:	38 60 00 0c 	li      r3,12                                  
      return RTEMS_RESOURCE_IN_USE;                                   
ffc0a488:	48 00 00 64 	b       ffc0a4ec <rtems_io_register_driver+0x16c>
    }                                                                 
                                                                      
    *registered_major = major;                                        
ffc0a48c:	93 e5 00 00 	stw     r31,0(r5)                              
  }                                                                   
                                                                      
  _IO_Driver_address_table [major] = *driver_table;                   
ffc0a490:	3d 20 00 00 	lis     r9,0                                   
ffc0a494:	80 c4 00 00 	lwz     r6,0(r4)                               
ffc0a498:	81 69 27 c4 	lwz     r11,10180(r9)                          
ffc0a49c:	1c 1f 00 18 	mulli   r0,r31,24                              
ffc0a4a0:	80 e4 00 04 	lwz     r7,4(r4)                               
ffc0a4a4:	81 04 00 08 	lwz     r8,8(r4)                               
ffc0a4a8:	7d 2b 02 14 	add     r9,r11,r0                              
ffc0a4ac:	81 44 00 0c 	lwz     r10,12(r4)                             
ffc0a4b0:	7c cb 01 2e 	stwx    r6,r11,r0                              
ffc0a4b4:	90 e9 00 04 	stw     r7,4(r9)                               
ffc0a4b8:	91 09 00 08 	stw     r8,8(r9)                               
ffc0a4bc:	91 49 00 0c 	stw     r10,12(r9)                             
ffc0a4c0:	81 64 00 14 	lwz     r11,20(r4)                             
ffc0a4c4:	80 04 00 10 	lwz     r0,16(r4)                              
ffc0a4c8:	91 69 00 14 	stw     r11,20(r9)                             
ffc0a4cc:	90 09 00 10 	stw     r0,16(r9)                              
                                                                      
  _Thread_Enable_dispatch();                                          
ffc0a4d0:	48 00 1f 21 	bl      ffc0c3f0 <_Thread_Enable_dispatch>     
                                                                      
  return rtems_io_initialize( major, 0, NULL );                       
ffc0a4d4:	7f e3 fb 78 	mr      r3,r31                                 
ffc0a4d8:	38 80 00 00 	li      r4,0                                   
ffc0a4dc:	38 a0 00 00 	li      r5,0                                   
ffc0a4e0:	48 00 96 ed 	bl      ffc13bcc <rtems_io_initialize>         
ffc0a4e4:	48 00 00 08 	b       ffc0a4ec <rtems_io_register_driver+0x16c>
ffc0a4e8:	38 60 00 09 	li      r3,9                                   
}                                                                     
ffc0a4ec:	80 01 00 14 	lwz     r0,20(r1)                              
ffc0a4f0:	83 e1 00 0c 	lwz     r31,12(r1)                             
ffc0a4f4:	38 21 00 10 	addi    r1,r1,16                               
ffc0a4f8:	7c 08 03 a6 	mtlr    r0                                     
ffc0a4fc:	4e 80 00 20 	blr                                            
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( rtems_io_is_empty_table( driver_table ) )                      
    return RTEMS_INVALID_ADDRESS;                                     
                                                                      
  if ( major >= major_limit )                                         
ffc0a500:	7f 9f 00 40 	cmplw   cr7,r31,r0                             
ffc0a504:	38 60 00 0a 	li      r3,10                                  
ffc0a508:	41 9c fe d8 	blt+    cr7,ffc0a3e0 <rtems_io_register_driver+0x60>
ffc0a50c:	4b ff ff e0 	b       ffc0a4ec <rtems_io_register_driver+0x16c>
  rtems_device_major_number n = _IO_Number_of_drivers;                
  rtems_device_major_number m = 0;                                    
                                                                      
  /* major is error checked by caller */                              
                                                                      
  for ( m = 0; m < n; ++m ) {                                         
ffc0a510:	3b ff 00 01 	addi    r31,r31,1                              
ffc0a514:	39 29 00 18 	addi    r9,r9,24                               
ffc0a518:	4b ff ff 20 	b       ffc0a438 <rtems_io_register_driver+0xb8>
                                                                      
  if ( major == 0 ) {                                                 
    rtems_status_code sc = rtems_io_obtain_major_number( registered_major );
                                                                      
    if ( sc != RTEMS_SUCCESSFUL ) {                                   
      _Thread_Enable_dispatch();                                      
ffc0a51c:	48 00 1e d5 	bl      ffc0c3f0 <_Thread_Enable_dispatch>     
ffc0a520:	38 60 00 05 	li      r3,5                                   
      return sc;                                                      
ffc0a524:	4b ff ff c8 	b       ffc0a4ec <rtems_io_register_driver+0x16c>
                                                                      
ffc405b8 <rtems_rate_monotonic_period>:                               
                                                                      
rtems_status_code rtems_rate_monotonic_period(                        
  rtems_id       id,                                                  
  rtems_interval length                                               
)                                                                     
{                                                                     
ffc405b8:	94 21 ff d8 	stwu    r1,-40(r1)                             
ffc405bc:	7c 08 02 a6 	mflr    r0                                     
ffc405c0:	93 c1 00 20 	stw     r30,32(r1)                             
ffc405c4:	7c 7e 1b 78 	mr      r30,r3                                 
ffc405c8:	3c 60 00 00 	lis     r3,0                                   
ffc405cc:	93 e1 00 24 	stw     r31,36(r1)                             
ffc405d0:	38 63 68 c4 	addi    r3,r3,26820                            
ffc405d4:	7c 9f 23 78 	mr      r31,r4                                 
ffc405d8:	38 a1 00 08 	addi    r5,r1,8                                
ffc405dc:	90 01 00 2c 	stw     r0,44(r1)                              
ffc405e0:	7f c4 f3 78 	mr      r4,r30                                 
ffc405e4:	93 a1 00 1c 	stw     r29,28(r1)                             
ffc405e8:	93 81 00 18 	stw     r28,24(r1)                             
ffc405ec:	4b fc d6 01 	bl      ffc0dbec <_Objects_Get>                
ffc405f0:	7c 7d 1b 78 	mr      r29,r3                                 
  rtems_rate_monotonic_period_states   local_state;                   
  ISR_Level                            level;                         
                                                                      
  the_period = _Rate_monotonic_Get( id, &location );                  
                                                                      
  switch ( location ) {                                               
ffc405f4:	80 01 00 08 	lwz     r0,8(r1)                               
ffc405f8:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc405fc:	40 9e 01 70 	bne-    cr7,ffc4076c <rtems_rate_monotonic_period+0x1b4>
    case OBJECTS_LOCAL:                                               
      if ( !_Thread_Is_executing( the_period->owner ) ) {             
ffc40600:	3d 20 00 00 	lis     r9,0                                   
ffc40604:	80 09 36 14 	lwz     r0,13844(r9)                           
ffc40608:	81 23 00 40 	lwz     r9,64(r3)                              
ffc4060c:	7f 89 00 00 	cmpw    cr7,r9,r0                              
ffc40610:	41 9e 00 10 	beq-    cr7,ffc40620 <rtems_rate_monotonic_period+0x68>
        _Thread_Enable_dispatch();                                    
ffc40614:	4b fc e1 d1 	bl      ffc0e7e4 <_Thread_Enable_dispatch>     
ffc40618:	3b c0 00 17 	li      r30,23                                 
        return RTEMS_NOT_OWNER_OF_RESOURCE;                           
ffc4061c:	48 00 01 54 	b       ffc40770 <rtems_rate_monotonic_period+0x1b8>
      }                                                               
                                                                      
      if ( length == RTEMS_PERIOD_STATUS ) {                          
ffc40620:	2f 9f 00 00 	cmpwi   cr7,r31,0                              
ffc40624:	40 be 00 28 	bne+    cr7,ffc4064c <rtems_rate_monotonic_period+0x94>
        switch ( the_period->state ) {                                
ffc40628:	80 03 00 38 	lwz     r0,56(r3)                              
ffc4062c:	3b c0 00 00 	li      r30,0                                  
ffc40630:	2b 80 00 04 	cmplwi  cr7,r0,4                               
ffc40634:	41 9d 01 30 	bgt-    cr7,ffc40764 <rtems_rate_monotonic_period+0x1ac>
ffc40638:	3d 20 ff c7 	lis     r9,-57                                 
ffc4063c:	54 00 10 3a 	rlwinm  r0,r0,2,0,29                           
ffc40640:	39 29 a3 9c 	addi    r9,r9,-23652                           
ffc40644:	7f c9 00 2e 	lwzx    r30,r9,r0                              
ffc40648:	48 00 01 1c 	b       ffc40764 <rtems_rate_monotonic_period+0x1ac>
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc4064c:	7f 80 00 a6 	mfmsr   r28                                    
ffc40650:	7c 10 42 a6 	mfsprg  r0,0                                   
ffc40654:	7f 80 00 78 	andc    r0,r28,r0                              
ffc40658:	7c 00 01 24 	mtmsr   r0                                     
        _Thread_Enable_dispatch();                                    
        return( return_value );                                       
      }                                                               
                                                                      
      _ISR_Disable( level );                                          
      switch ( the_period->state ) {                                  
ffc4065c:	80 03 00 38 	lwz     r0,56(r3)                              
ffc40660:	2f 80 00 02 	cmpwi   cr7,r0,2                               
ffc40664:	41 9e 00 60 	beq-    cr7,ffc406c4 <rtems_rate_monotonic_period+0x10c>
ffc40668:	2f 80 00 04 	cmpwi   cr7,r0,4                               
ffc4066c:	41 9e 00 cc 	beq-    cr7,ffc40738 <rtems_rate_monotonic_period+0x180>
ffc40670:	2f 80 00 00 	cmpwi   cr7,r0,0                               
ffc40674:	40 9e 00 f8 	bne-    cr7,ffc4076c <rtems_rate_monotonic_period+0x1b4>
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc40678:	7f 80 01 24 	mtmsr   r28                                    
          _ISR_Enable( level );                                       
                                                                      
          /*                                                          
           *  Baseline statistics information for the beginning of a period.
           */                                                         
          _Rate_monotonic_Initiate_statistics( the_period );          
ffc4067c:	4b ff fc 99 	bl      ffc40314 <_Rate_monotonic_Initiate_statistics>
                                                                      
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
ffc40680:	39 20 00 02 	li      r9,2                                   
ffc40684:	91 3d 00 38 	stw     r9,56(r29)                             
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
ffc40688:	3d 20 ff c4 	lis     r9,-60                                 
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc4068c:	38 00 00 00 	li      r0,0                                   
  the_watchdog->routine   = routine;                                  
ffc40690:	39 29 07 94 	addi    r9,r9,1940                             
  the_watchdog->id        = id;                                       
ffc40694:	93 dd 00 30 	stw     r30,48(r29)                            
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc40698:	3c 60 00 00 	lis     r3,0                                   
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
ffc4069c:	91 3d 00 2c 	stw     r9,44(r29)                             
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc406a0:	38 63 65 68 	addi    r3,r3,25960                            
ffc406a4:	38 9d 00 10 	addi    r4,r29,16                              
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
  the_watchdog->routine   = routine;                                  
  the_watchdog->id        = id;                                       
  the_watchdog->user_data = user_data;                                
ffc406a8:	90 1d 00 34 	stw     r0,52(r29)                             
          );                                                          
                                                                      
          the_period->next_length = length;                           
                                                                      
          _Watchdog_Insert_ticks( &the_period->Timer, length );       
          _Thread_Enable_dispatch();                                  
ffc406ac:	3b c0 00 00 	li      r30,0                                  
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc406b0:	93 fd 00 1c 	stw     r31,28(r29)                            
  Watchdog_Service_routine_entry  routine,                            
  Objects_Id                      id,                                 
  void                           *user_data                           
)                                                                     
{                                                                     
  the_watchdog->state     = WATCHDOG_INACTIVE;                        
ffc406b4:	90 1d 00 18 	stw     r0,24(r29)                             
            _Rate_monotonic_Timeout,                                  
            id,                                                       
            NULL                                                      
          );                                                          
                                                                      
          the_period->next_length = length;                           
ffc406b8:	93 fd 00 3c 	stw     r31,60(r29)                            
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc406bc:	4b fc f6 31 	bl      ffc0fcec <_Watchdog_Insert>            
ffc406c0:	48 00 00 a4 	b       ffc40764 <rtems_rate_monotonic_period+0x1ac>
        case RATE_MONOTONIC_ACTIVE:                                   
                                                                      
          /*                                                          
           *  Update statistics from the concluding period.           
           */                                                         
          _Rate_monotonic_Update_statistics( the_period );            
ffc406c4:	4b ff fd d9 	bl      ffc4049c <_Rate_monotonic_Update_statistics>
          /*                                                          
           *  This tells the _Rate_monotonic_Timeout that this task is
           *  in the process of blocking on the period and that we    
           *  may be changing the length of the next period.          
           */                                                         
          the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;       
ffc406c8:	38 00 00 01 	li      r0,1                                   
          the_period->next_length = length;                           
ffc406cc:	93 fd 00 3c 	stw     r31,60(r29)                            
          /*                                                          
           *  This tells the _Rate_monotonic_Timeout that this task is
           *  in the process of blocking on the period and that we    
           *  may be changing the length of the next period.          
           */                                                         
          the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;       
ffc406d0:	90 1d 00 38 	stw     r0,56(r29)                             
ffc406d4:	7f 80 01 24 	mtmsr   r28                                    
          the_period->next_length = length;                           
                                                                      
          _ISR_Enable( level );                                       
                                                                      
          _Thread_Executing->Wait.id = the_period->Object.id;         
ffc406d8:	3d 20 00 00 	lis     r9,0                                   
ffc406dc:	80 1d 00 08 	lwz     r0,8(r29)                              
ffc406e0:	81 29 36 14 	lwz     r9,13844(r9)                           
          _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc406e4:	38 80 40 00 	li      r4,16384                               
          the_period->state = RATE_MONOTONIC_OWNER_IS_BLOCKING;       
          the_period->next_length = length;                           
                                                                      
          _ISR_Enable( level );                                       
                                                                      
          _Thread_Executing->Wait.id = the_period->Object.id;         
ffc406e8:	90 09 00 20 	stw     r0,32(r9)                              
          _Thread_Set_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc406ec:	7d 23 4b 78 	mr      r3,r9                                  
ffc406f0:	4b fc eb 65 	bl      ffc0f254 <_Thread_Set_state>           
static inline uint32_t ppc_interrupt_disable( void )                  
{                                                                     
  uint32_t level;                                                     
  uint32_t mask;                                                      
                                                                      
  asm volatile (                                                      
ffc406f4:	7d 20 00 a6 	mfmsr   r9                                     
ffc406f8:	7c 10 42 a6 	mfsprg  r0,0                                   
ffc406fc:	7d 20 00 78 	andc    r0,r9,r0                               
ffc40700:	7c 00 01 24 	mtmsr   r0                                     
           *  Did the watchdog timer expire while we were actually blocking
           *  on it?                                                  
           */                                                         
          _ISR_Disable( level );                                      
            local_state = the_period->state;                          
            the_period->state = RATE_MONOTONIC_ACTIVE;                
ffc40704:	39 60 00 02 	li      r11,2                                  
          /*                                                          
           *  Did the watchdog timer expire while we were actually blocking
           *  on it?                                                  
           */                                                         
          _ISR_Disable( level );                                      
            local_state = the_period->state;                          
ffc40708:	80 1d 00 38 	lwz     r0,56(r29)                             
            the_period->state = RATE_MONOTONIC_ACTIVE;                
ffc4070c:	91 7d 00 38 	stw     r11,56(r29)                            
  return level;                                                       
}                                                                     
                                                                      
static inline void ppc_interrupt_enable( uint32_t level )             
{                                                                     
  asm volatile (                                                      
ffc40710:	7d 20 01 24 	mtmsr   r9                                     
                                                                      
          /*                                                          
           *  If it did, then we want to unblock ourself and continue as
           *  if nothing happen.  The period was reset in the timeout routine.
           */                                                         
          if ( local_state == RATE_MONOTONIC_EXPIRED_WHILE_BLOCKING ) 
ffc40714:	2f 80 00 03 	cmpwi   cr7,r0,3                               
ffc40718:	40 be 00 14 	bne+    cr7,ffc4072c <rtems_rate_monotonic_period+0x174>
            _Thread_Clear_state( _Thread_Executing, STATES_WAITING_FOR_PERIOD );
ffc4071c:	3d 20 00 00 	lis     r9,0                                   <== NOT EXECUTED
ffc40720:	80 69 36 14 	lwz     r3,13844(r9)                           <== NOT EXECUTED
ffc40724:	38 80 40 00 	li      r4,16384                               <== NOT EXECUTED
ffc40728:	4b fc db d9 	bl      ffc0e300 <_Thread_Clear_state>         <== NOT EXECUTED
                                                                      
          _Thread_Enable_dispatch();                                  
ffc4072c:	4b fc e0 b9 	bl      ffc0e7e4 <_Thread_Enable_dispatch>     
ffc40730:	3b c0 00 00 	li      r30,0                                  
          return RTEMS_SUCCESSFUL;                                    
ffc40734:	48 00 00 3c 	b       ffc40770 <rtems_rate_monotonic_period+0x1b8>
        case RATE_MONOTONIC_EXPIRED:                                  
                                                                      
          /*                                                          
           *  Update statistics from the concluding period            
           */                                                         
          _Rate_monotonic_Update_statistics( the_period );            
ffc40738:	4b ff fd 65 	bl      ffc4049c <_Rate_monotonic_Update_statistics>
ffc4073c:	7f 80 01 24 	mtmsr   r28                                    
                                                                      
          _ISR_Enable( level );                                       
                                                                      
          the_period->state = RATE_MONOTONIC_ACTIVE;                  
ffc40740:	38 00 00 02 	li      r0,2                                   
  Watchdog_Control      *the_watchdog,                                
  Watchdog_Interval      units                                        
)                                                                     
{                                                                     
                                                                      
  the_watchdog->initial = units;                                      
ffc40744:	93 fd 00 1c 	stw     r31,28(r29)                            
                                                                      
  _Watchdog_Insert( &_Watchdog_Ticks_chain, the_watchdog );           
ffc40748:	3c 60 00 00 	lis     r3,0                                   
ffc4074c:	90 1d 00 38 	stw     r0,56(r29)                             
ffc40750:	38 63 65 68 	addi    r3,r3,25960                            
ffc40754:	38 9d 00 10 	addi    r4,r29,16                              
          the_period->next_length = length;                           
ffc40758:	93 fd 00 3c 	stw     r31,60(r29)                            
                                                                      
          _Watchdog_Insert_ticks( &the_period->Timer, length );       
          _Thread_Enable_dispatch();                                  
ffc4075c:	3b c0 00 06 	li      r30,6                                  
ffc40760:	4b fc f5 8d 	bl      ffc0fcec <_Watchdog_Insert>            
ffc40764:	4b fc e0 81 	bl      ffc0e7e4 <_Thread_Enable_dispatch>     
          return RTEMS_TIMEOUT;                                       
ffc40768:	48 00 00 08 	b       ffc40770 <rtems_rate_monotonic_period+0x1b8>
ffc4076c:	3b c0 00 04 	li      r30,4                                  
    case OBJECTS_ERROR:                                               
      break;                                                          
  }                                                                   
                                                                      
  return RTEMS_INVALID_ID;                                            
}                                                                     
ffc40770:	80 01 00 2c 	lwz     r0,44(r1)                              
ffc40774:	7f c3 f3 78 	mr      r3,r30                                 
ffc40778:	83 81 00 18 	lwz     r28,24(r1)                             
ffc4077c:	7c 08 03 a6 	mtlr    r0                                     
ffc40780:	83 a1 00 1c 	lwz     r29,28(r1)                             
ffc40784:	83 c1 00 20 	lwz     r30,32(r1)                             
ffc40788:	83 e1 00 24 	lwz     r31,36(r1)                             
ffc4078c:	38 21 00 28 	addi    r1,r1,40                               
ffc40790:	4e 80 00 20 	blr