RTEMS-5
Annotated Report
Fri Aug 10 14:16:06 2018

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
                           
  uint32_t cpu_max;
                                                  
  uint32_t cpu_index;
                                                

                                                                     
  rtems_printf(
                                                      
40003464:	13 10 00 46 	sethi  %hi(0x40011800), %o1
                   
40003468:	90 10 00 18 	mov  %i0, %o0
                                 
4000346c:	40 00 0a 11 	call  40005cb0 <rtems_printf>
                 
40003470:	92 12 61 40 	or  %o1, 0x140, %o1
                           
     "                             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
                          
    if ( sp < the_stack->area ) {
                                    
4000c034:	fa 06 20 d0 	ld  [ %i0 + 0xd0 ], %i5
                       
4000c038:	b8 07 60 08 	add  %i5, 8, %i4
                              
4000c03c:	13 10 00 4f 	sethi  %hi(0x40013c00), %o1
                   
4000c040:	94 10 20 10 	mov  0x10, %o2
                                
4000c044:	90 10 00 1c 	mov  %i4, %o0
                                 
4000c048:	80 a7 80 1d 	cmp  %fp, %i5
                                 
4000c04c:	0a 80 00 0e 	bcs  4000c084 <rtems_stack_checker_switch_extension+0x54>
<== NEVER TAKEN
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