RTEMS-5
Annotated Report
Wed Aug 22 17:27:50 2018

4000bfc8 <rtems_stack_checker_begin_extension>:
                      
  return ( uint32_t ) ( per_cpu_envelope - &_Per_CPU_Information[ 0 ] );

4000bfc8:	07 33 33 33 	sethi  %hi(0xcccccc00), %g3
                   <== NOT EXECUTED
4000bfcc:	86 10 e0 cd 	or  %g3, 0xcd, %g3	! cccccccd <RAM_END+0x8c8ccccd>
<== NOT EXECUTED
4000bfd0:	03 10 00 5f 	sethi  %hi(0x40017c00), %g1
                   <== NOT EXECUTED
#endif
                                                               

                                                                     
  cpu_self_index = _Per_CPU_Get_index( cpu_self );
                   
  stack = &Stack_check_Interrupt_stack[ cpu_self_index ];
            

                                                                     
  if ( stack->area == NULL ) {
                                       
4000bfd4:	05 10 00 5a 	sethi  %hi(0x40016800), %g2
                   <== NOT EXECUTED
4000bfd8:	82 10 60 00 	mov  %g1, %g1
                                 <== NOT EXECUTED
4000bfdc:	84 10 a2 2c 	or  %g2, 0x22c, %g2
                           <== NOT EXECUTED
4000bfe0:	82 21 80 01 	sub  %g6, %g1, %g1
                            <== NOT EXECUTED
4000bfe4:	83 38 60 04 	sra  %g1, 4, %g1
                              <== NOT EXECUTED
4000bfe8:	82 58 40 03 	smul  %g1, %g3, %g1
                           <== NOT EXECUTED
4000bfec:	83 28 60 03 	sll  %g1, 3, %g1
                              <== NOT EXECUTED
4000bff0:	86 00 80 01 	add  %g2, %g1, %g3
                            <== NOT EXECUTED
4000bff4:	da 00 e0 04 	ld  [ %g3 + 4 ], %o5
                          <== NOT EXECUTED
4000bff8:	80 a3 60 00 	cmp  %o5, 0
                                   <== NOT EXECUTED
4000bffc:	22 80 00 04 	be,a   4000c00c <rtems_stack_checker_begin_extension+0x44>
<== NOT EXECUTED
4000c000:	d0 01 a0 08 	ld  [ %g6 + 8 ], %o0
                          
  }
                                                                  

                                                                     
#if defined(RTEMS_SMP)
                                               
  _Thread_Dispatch_enable( cpu_self );
                               
#endif
                                                               
}
                                                                    
4000c004:	81 c3 e0 08 	retl 
                                         
4000c008:	01 00 00 00 	nop 
                                          
    stack->area = cpu_self->interrupt_stack_low;
                     
4000c00c:	d0 20 e0 04 	st  %o0, [ %g3 + 4 ]
                          
    Stack_check_Dope_stack( stack );
                                 
4000c010:	92 10 20 a5 	mov  0xa5, %o1
                                
    stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -

4000c014:	c8 01 a0 0c 	ld  [ %g6 + 0xc ], %g4
                        
4000c018:	88 21 00 08 	sub  %g4, %o0, %g4
                            
    Stack_check_Dope_stack( stack );
                                 
4000c01c:	94 10 00 04 	mov  %g4, %o2
                                 
    stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -

4000c020:	c8 20 80 01 	st  %g4, [ %g2 + %g1 ]
                        
    Stack_check_Dope_stack( stack );
                                 
4000c024:	82 13 c0 00 	mov  %o7, %g1
                                 
4000c028:	40 00 09 9f 	call  4000e6a4 <memset>
                       
4000c02c:	9e 10 40 00 	mov  %g1, %o7
                                 

                                                                     

400024cc <rtems_stack_checker_is_blown>: /* * Check if blown */ bool rtems_stack_checker_is_blown( void ) {
400024cc:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  rtems_stack_checker_switch_extension( _Thread_Get_executing(), NULL );

400024d0:	d0 01 a0 20 	ld  [ %g6 + 0x20 ], %o0
                       <== NOT EXECUTED

                                                                     
  /*
                                                                 
   * The Stack Pointer and the Pattern Area are OK so return false.
  
   */
                                                                
  return false;
                                                      
}
                                                                    
400024d4:	b0 10 20 00 	clr  %i0
                                      <== NOT EXECUTED
  rtems_stack_checker_switch_extension( _Thread_Get_executing(), NULL );

400024d8:	7f ff ff bb 	call  400023c4 <rtems_stack_checker_switch_extension>
<== NOT EXECUTED
400024dc:	92 10 20 00 	clr  %o1
                                      <== NOT EXECUTED
}
                                                                    
400024e0:	81 c7 e0 08 	ret 
                                          
400024e4:	81 e8 00 00 	restore 
                                      

                                                                     

400034d8 <rtems_stack_checker_report_usage>: void rtems_stack_checker_report_usage( void ) {
400034d8:	9d e3 bf 98 	save  %sp, -104, %sp
                          <== NOT EXECUTED
  rtems_printer printer;
                                             
  rtems_print_printer_printk(&printer);
                              
400034dc:	40 00 09 e1 	call  40005c60 <rtems_print_printer_printk>
   <== NOT EXECUTED
400034e0:	90 07 bf f8 	add  %fp, -8, %o0
                             <== NOT EXECUTED
  rtems_stack_checker_report_usage_with_plugin( &printer );
          
400034e4:	7f ff ff df 	call  40003460 <rtems_stack_checker_report_usage_with_plugin>

400034e8:	90 07 bf f8 	add  %fp, -8, %o0
                             
}
                                                                    
400034ec:	81 c7 e0 08 	ret 
                                          
400034f0:	81 e8 00 00 	restore 
                                      

                                                                     

40003460 <rtems_stack_checker_report_usage_with_plugin>: */ void rtems_stack_checker_report_usage_with_plugin( const rtems_printer* printer ) {
40003460:	9d e3 bf a0 	save  %sp, -96, %sp
                           <== NOT EXECUTED
  uint32_t cpu_max;
                                                  
  uint32_t cpu_index;
                                                

                                                                     
  rtems_printf(
                                                      
40003464:	13 10 00 46 	sethi  %hi(0x40011800), %o1
                   <== NOT EXECUTED
40003468:	90 10 00 18 	mov  %i0, %o0
                                 <== NOT EXECUTED
4000346c:	40 00 0a 11 	call  40005cb0 <rtems_printf>
                 <== NOT EXECUTED
40003470:	92 12 61 40 	or  %o1, 0x140, %o1
                           <== NOT EXECUTED
     "                             STACK USAGE BY THREAD\n"
          
     "ID         NAME                  LOW        HIGH       CURRENT     AVAIL   USED\n"

  );
                                                                 

                                                                     
  /* iterate over all threads and dump the usage */
                  
  rtems_task_iterate(
                                                
40003474:	92 10 00 18 	mov  %i0, %o1
                                 
40003478:	11 10 00 0c 	sethi  %hi(0x40003000), %o0
                   
4000347c:	40 00 10 c4 	call  4000778c <rtems_task_iterate>
           
40003480:	90 12 22 74 	or  %o0, 0x274, %o0	! 40003274 <Stack_check_Dump_threads_usage>

    Stack_check_Dump_threads_usage,
                                  
    RTEMS_DECONST( rtems_printer *, printer )
                        
  );
                                                                 

                                                                     
  cpu_max = rtems_get_processor_count();
                             
40003484:	40 00 0f c4 	call  40007394 <rtems_get_processor_count>
    
40003488:	01 00 00 00 	nop 
                                          

                                                                     
  for ( cpu_index = 0; cpu_index < cpu_max; ++cpu_index ) {
          
4000348c:	b4 92 20 00 	orcc  %o0, 0, %i2
                             
40003490:	02 80 00 10 	be  400034d0 <rtems_stack_checker_report_usage_with_plugin+0x70>
<== NEVER TAKEN
40003494:	39 10 00 53 	sethi  %hi(0x40014c00), %i4
                   
  Stack_check_Dump_stack_usage(
                                      
40003498:	37 10 00 46 	sethi  %hi(0x40011800), %i3
                   
4000349c:	b8 17 20 1c 	or  %i4, 0x1c, %i4
                            
  for ( cpu_index = 0; cpu_index < cpu_max; ++cpu_index ) {
          
400034a0:	ba 10 20 00 	clr  %i5
                                      
  Stack_check_Dump_stack_usage(
                                      
400034a4:	b6 16 e1 c8 	or  %i3, 0x1c8, %i3
                           
400034a8:	96 10 00 1d 	mov  %i5, %o3
                                 
400034ac:	90 10 00 1c 	mov  %i4, %o0
                                 
400034b0:	98 10 00 18 	mov  %i0, %o4
                                 
400034b4:	94 10 00 1b 	mov  %i3, %o2
                                 
400034b8:	7f ff ff 29 	call  4000315c <Stack_check_Dump_stack_usage>
 
400034bc:	92 10 20 00 	clr  %o1
                                      
  for ( cpu_index = 0; cpu_index < cpu_max; ++cpu_index ) {
          
400034c0:	ba 07 60 01 	inc  %i5
                                      
400034c4:	80 a6 80 1d 	cmp  %i2, %i5
                                 
400034c8:	12 bf ff f8 	bne  400034a8 <rtems_stack_checker_report_usage_with_plugin+0x48>
<== NEVER TAKEN
400034cc:	b8 07 20 08 	add  %i4, 8, %i4
                              
      &Stack_check_Interrupt_stack[ cpu_index ],
                     
      cpu_index,
                                                     
      printer
                                                        
    );
                                                               
  }
                                                                  
}
                                                                    
400034d0:	81 c7 e0 08 	ret 
                                          
400034d4:	81 e8 00 00 	restore 
                                      

                                                                     

4000c030 <rtems_stack_checker_switch_extension>: */ void rtems_stack_checker_switch_extension( Thread_Control *running RTEMS_UNUSED, Thread_Control *heir RTEMS_UNUSED ) {
4000c030:	9d e3 bf 80 	save  %sp, -128, %sp
                          <== NOT EXECUTED
    if ( sp < the_stack->area ) {
                                    
4000c034:	fa 06 20 d0 	ld  [ %i0 + 0xd0 ], %i5
                       <== NOT EXECUTED
4000c038:	b8 07 60 08 	add  %i5, 8, %i4
                              <== NOT EXECUTED
4000c03c:	13 10 00 4f 	sethi  %hi(0x40013c00), %o1
                   <== NOT EXECUTED
4000c040:	94 10 20 10 	mov  0x10, %o2
                                <== NOT EXECUTED
4000c044:	90 10 00 1c 	mov  %i4, %o0
                                 <== NOT EXECUTED
4000c048:	80 a7 80 1d 	cmp  %fp, %i5
                                 <== NOT EXECUTED
4000c04c:	0a 80 00 0e 	bcs  4000c084 <rtems_stack_checker_switch_extension+0x54>
<== NOT EXECUTED
4000c050:	92 12 60 6c 	or  %o1, 0x6c, %o1
                            
4000c054:	40 00 09 2f 	call  4000e510 <memcmp>
                       
4000c058:	01 00 00 00 	nop 
                                          
    if ( sp > (the_stack->area + the_stack->size) ) {
                
4000c05c:	c2 06 20 cc 	ld  [ %i0 + 0xcc ], %g1
                       
4000c060:	82 07 40 01 	add  %i5, %g1, %g1
                            
4000c064:	80 a7 80 01 	cmp  %fp, %g1
                                 
4000c068:	18 80 00 0a 	bgu  4000c090 <rtems_stack_checker_switch_extension+0x60>
<== NEVER TAKEN
4000c06c:	b6 10 00 08 	mov  %o0, %i3
                                 
   */
                                                                
  sp_ok = Stack_check_Frame_pointer_in_range( running );
             

                                                                     
  pattern_ok = Stack_check_Is_pattern_valid( running );
              

                                                                     
  if ( !sp_ok || !pattern_ok ) {
                                     
4000c070:	80 a2 20 00 	cmp  %o0, 0
                                   
4000c074:	12 80 00 08 	bne  4000c094 <rtems_stack_checker_switch_extension+0x64>

4000c078:	11 10 00 4e 	sethi  %hi(0x40013800), %o0
                   
    Stack_check_report_blown_task( running, pattern_ok );
            
  }
                                                                  
}
                                                                    
4000c07c:	81 c7 e0 08 	ret 
                                          
4000c080:	81 e8 00 00 	restore 
                                      
4000c084:	40 00 09 23 	call  4000e510 <memcmp>
                       <== NOT EXECUTED
4000c088:	01 00 00 00 	nop 
                                          <== NOT EXECUTED
4000c08c:	b6 10 00 08 	mov  %o0, %i3
                                 <== NOT EXECUTED
  printk("BLOWN STACK!!!\n");
                                        
4000c090:	11 10 00 4e 	sethi  %hi(0x40013800), %o0
                   <== NOT EXECUTED
4000c094:	7f ff e3 3d 	call  40004d88 <printk>
                       
4000c098:	90 12 23 90 	or  %o0, 0x390, %o0	! 40013b90 <test_state_strings+0x14>

  printk("task control block: 0x%08" PRIxPTR "\n", (intptr_t) running);

4000c09c:	92 10 00 18 	mov  %i0, %o1
                                 
4000c0a0:	11 10 00 4e 	sethi  %hi(0x40013800), %o0
                   
4000c0a4:	7f ff e3 39 	call  40004d88 <printk>
                       
4000c0a8:	90 12 23 a0 	or  %o0, 0x3a0, %o0	! 40013ba0 <test_state_strings+0x24>

  printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
  
4000c0ac:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
4000c0b0:	11 10 00 4e 	sethi  %hi(0x40013800), %o0
                   
4000c0b4:	7f ff e3 35 	call  40004d88 <printk>
                       
4000c0b8:	90 12 23 c0 	or  %o0, 0x3c0, %o0	! 40013bc0 <test_state_strings+0x44>

  printk(
                                                            
4000c0bc:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
4000c0c0:	11 10 00 4e 	sethi  %hi(0x40013800), %o0
                   
4000c0c4:	7f ff e3 31 	call  40004d88 <printk>
                       
4000c0c8:	90 12 23 d8 	or  %o0, 0x3d8, %o0	! 40013bd8 <test_state_strings+0x5c>

  _Thread_Get_name(running, name, sizeof(name));
                     
4000c0cc:	94 10 20 20 	mov  0x20, %o2
                                
4000c0d0:	92 07 bf e0 	add  %fp, -32, %o1
                            
4000c0d4:	40 00 07 c0 	call  4000dfd4 <_Thread_Get_name>
             
4000c0d8:	90 10 00 18 	mov  %i0, %o0
                                 
  printk("task name string: %s\n", name);
                            
4000c0dc:	92 07 bf e0 	add  %fp, -32, %o1
                            
4000c0e0:	11 10 00 4e 	sethi  %hi(0x40013800), %o0
                   
4000c0e4:	7f ff e3 29 	call  40004d88 <printk>
                       
4000c0e8:	90 12 23 f0 	or  %o0, 0x3f0, %o0	! 40013bf0 <test_state_strings+0x74>

    (unsigned long) stack->size,
                                     
4000c0ec:	d2 06 20 cc 	ld  [ %i0 + 0xcc ], %o1
                       
    (intptr_t) stack->area,
                                          
4000c0f0:	d4 06 20 d0 	ld  [ %i0 + 0xd0 ], %o2
                       
  printk(
                                                            
4000c0f4:	96 02 80 09 	add  %o2, %o1, %o3
                            
4000c0f8:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   
4000c0fc:	7f ff e3 23 	call  40004d88 <printk>
                       
4000c100:	90 12 20 08 	or  %o0, 8, %o0	! 40013c08 <test_state_strings+0x8c>

  if (!pattern_ok) {
                                                 
4000c104:	80 a6 e0 00 	cmp  %i3, 0
                                   
4000c108:	12 80 00 05 	bne  4000c11c <rtems_stack_checker_switch_extension+0xec>
<== ALWAYS TAKEN
4000c10c:	96 07 60 18 	add  %i5, 0x18, %o3
                           
4000c110:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        <== NOT EXECUTED
4000c114:	7f ff ea 5d 	call  40006a88 <_Terminate>
                   
4000c118:	90 10 20 08 	mov  8, %o0
                                   
    printk(
                                                          
4000c11c:	94 10 00 1c 	mov  %i4, %o2
                                 
4000c120:	92 10 20 10 	mov  0x10, %o1
                                
4000c124:	11 10 00 4f 	sethi  %hi(0x40013c00), %o0
                   
4000c128:	7f ff e3 18 	call  40004d88 <printk>
                       
4000c12c:	90 12 20 38 	or  %o0, 0x38, %o0	! 40013c38 <test_state_strings+0xbc>

4000c130:	10 bf ff f9 	b  4000c114 <rtems_stack_checker_switch_extension+0xe4>

4000c134:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1