RTEMS-5
Annotated Report
libstackchk
Sat Apr 11 19:28:06 2020

40006e74 <rtems_stack_checker_begin_extension>:
                      

                                                                     
void rtems_stack_checker_begin_extension( Thread_Control *executing )

{
                                                                    
40006e74:	9d e3 bf a0 	save  %sp, -96, %sp
                           
#endif
                                                               

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

                                                                     
  if ( stack->area == NULL ) {
                                       
40006e78:	03 10 00 68 	sethi  %hi(0x4001a000), %g1
                   
40006e7c:	84 10 61 a4 	or  %g1, 0x1a4, %g2	! 4001a1a4 <Stack_check_Interrupt_stack>

40006e80:	c6 00 a0 04 	ld  [ %g2 + 4 ], %g3
                          
40006e84:	80 a0 e0 00 	cmp  %g3, 0
                                   
40006e88:	22 80 00 04 	be,a   40006e98 <rtems_stack_checker_begin_extension+0x24>

40006e8c:	f0 01 a0 08 	ld  [ %g6 + 8 ], %i0
                          
  }
                                                                  

                                                                     
#if defined(RTEMS_SMP)
                                               
  _Thread_Dispatch_enable( cpu_self );
                               
#endif
                                                               
}
                                                                    
40006e90:	81 c7 e0 08 	ret 
                                          
40006e94:	81 e8 00 00 	restore 
                                      
    stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -

40006e98:	f4 01 a0 0c 	ld  [ %g6 + 0xc ], %i2
                        
40006e9c:	b4 26 80 18 	sub  %i2, %i0, %i2
                            
    stack->area = cpu_self->interrupt_stack_low;
                     
40006ea0:	f0 20 a0 04 	st  %i0, [ %g2 + 4 ]
                          
  return memcmp(
                                                     
40006ea4:	94 10 20 10 	mov  0x10, %o2
                                
    stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -

40006ea8:	f4 20 61 a4 	st  %i2, [ %g1 + 0x1a4 ]
                      
  return memcmp(
                                                     
40006eac:	90 10 00 18 	mov  %i0, %o0
                                 
40006eb0:	13 10 00 4d 	sethi  %hi(0x40013400), %o1
                   
40006eb4:	40 00 2c b6 	call  4001218c <memcmp>
                       
40006eb8:	92 12 60 fc 	or  %o1, 0xfc, %o1	! 400134fc <Stack_check_Sanity_pattern>

    if ( !Stack_check_Is_sanity_pattern_valid( stack ) ) {
           
40006ebc:	80 a2 20 00 	cmp  %o0, 0
                                   
40006ec0:	12 80 00 05 	bne  40006ed4 <rtems_stack_checker_begin_extension+0x60>

40006ec4:	b4 06 bf f0 	add  %i2, -16, %i2
                            
  memset(
                                                            
40006ec8:	b2 10 20 a5 	mov  0xa5, %i1
                                
40006ecc:	40 00 2d 15 	call  40012320 <memset>
                       
40006ed0:	91 ee 20 10 	restore  %i0, 0x10, %o0
                       
40006ed4:	13 12 53 95 	sethi  %hi(0x494e5400), %o1
                   <== NOT EXECUTED
40006ed8:	90 10 20 08 	mov  8, %o0
                                   <== NOT EXECUTED
40006edc:	40 00 17 5b 	call  4000cc48 <_Terminate>
                   <== NOT EXECUTED
40006ee0:	92 12 60 52 	or  %o1, 0x52, %o1
                            <== NOT EXECUTED
40006ee4:	01 00 00 00 	nop 
                                          <== NOT EXECUTED

                                                                     

40004ae8 <rtems_stack_checker_report_usage>: ); } } void rtems_stack_checker_report_usage( void ) {
40004ae8:	9d e3 bf 98 	save  %sp, -104, %sp
                          
  rtems_printer printer;
                                             
  rtems_print_printer_printk(&printer);
                              
40004aec:	40 00 20 90 	call  4000cd2c <rtems_print_printer_printk>
   
40004af0:	90 07 bf f8 	add  %fp, -8, %o0
                             
  rtems_stack_checker_report_usage_with_plugin( &printer );
          
40004af4:	7f ff ff ec 	call  40004aa4 <rtems_stack_checker_report_usage_with_plugin>

40004af8:	90 07 bf f8 	add  %fp, -8, %o0
                             
}
                                                                    
40004afc:	81 c7 e0 08 	ret 
                                          <== NOT EXECUTED
40004b00:	81 e8 00 00 	restore 
                                      

                                                                     

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

                                                                     
  rtems_printf(
                                                      
400354f8:	13 10 02 38 	sethi  %hi(0x4008e000), %o1
                   
400354fc:	90 10 00 18 	mov  %i0, %o0
                                 
40035500:	7f ff f3 a0 	call  40032380 <rtems_printf>
                 
40035504:	92 12 61 68 	or  %o1, 0x168, %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(
                                                
40035508:	92 10 00 18 	mov  %i0, %o1
                                 
{
                                                                    
4003550c:	b8 10 00 18 	mov  %i0, %i4
                                 
  rtems_task_iterate(
                                                
40035510:	11 10 00 d5 	sethi  %hi(0x40035400), %o0
                   
  Stack_check_Dump_stack_usage(
                                      
40035514:	35 10 02 38 	sethi  %hi(0x4008e000), %i2
                   
  rtems_task_iterate(
                                                
40035518:	90 12 20 bc 	or  %o0, 0xbc, %o0
                            
  Stack_check_Dump_stack_usage(
                                      
4003551c:	31 10 02 a4 	sethi  %hi(0x400a9000), %i0
                   
40035520:	b6 10 20 00 	clr  %i3
                                      
  rtems_task_iterate(
                                                
40035524:	40 00 10 0a 	call  4003954c <rtems_task_iterate>
           
40035528:	b2 10 20 00 	clr  %i1
                                      
  Stack_check_Dump_stack_usage(
                                      
4003552c:	b4 16 a1 f0 	or  %i2, 0x1f0, %i2
                           <== NOT EXECUTED
40035530:	7f ff ff 9d 	call  400353a4 <Stack_check_Dump_stack_usage>
 <== NOT EXECUTED
40035534:	91 ee 20 54 	restore  %i0, 0x54, %o0
                       

                                                                     

40006ee8 <rtems_stack_checker_switch_extension>: */ void rtems_stack_checker_switch_extension( Thread_Control *running, Thread_Control *heir ) {
40006ee8:	9d e3 bf 80 	save  %sp, -128, %sp
                          
    if ( sp < the_stack->area ) {
                                    
40006eec:	fa 06 20 d0 	ld  [ %i0 + 0xd0 ], %i5
                       
40006ef0:	80 a7 80 1d 	cmp  %fp, %i5
                                 
40006ef4:	0a 80 00 19 	bcs  40006f58 <rtems_stack_checker_switch_extension+0x70>

40006ef8:	94 10 20 10 	mov  0x10, %o2
                                
40006efc:	39 10 00 4d 	sethi  %hi(0x40013400), %i4
                   
40006f00:	90 10 00 1d 	mov  %i5, %o0
                                 
40006f04:	40 00 2c a2 	call  4001218c <memcmp>
                       
40006f08:	92 17 20 fc 	or  %i4, 0xfc, %o1
                            
    if ( sp > (the_stack->area + the_stack->size) ) {
                
40006f0c:	c2 06 20 cc 	ld  [ %i0 + 0xcc ], %g1
                       
40006f10:	82 07 40 01 	add  %i5, %g1, %g1
                            
40006f14:	80 a7 80 01 	cmp  %fp, %g1
                                 
40006f18:	18 80 00 15 	bgu  40006f6c <rtems_stack_checker_switch_extension+0x84>

40006f1c:	b6 10 00 08 	mov  %o0, %i3
                                 
#else
                                                                
  sp_ok = Stack_check_Frame_pointer_in_range( running );
             

                                                                     
  pattern_ok = Stack_check_Is_sanity_pattern_valid( &running->Start.Initial_stack );


                                                                     
  if ( !sp_ok || !pattern_ok ) {
                                     
40006f20:	80 a2 20 00 	cmp  %o0, 0
                                   
40006f24:	12 80 00 12 	bne  40006f6c <rtems_stack_checker_switch_extension+0x84>

40006f28:	03 10 00 68 	sethi  %hi(0x4001a000), %g1
                   
  }
                                                                  
#endif
                                                               

                                                                     
  stack = &Stack_check_Interrupt_stack[ _SMP_Get_current_processor() ];


                                                                     
  if ( stack->area != NULL && !Stack_check_Is_sanity_pattern_valid( stack ) ) {

40006f2c:	d0 00 61 a8 	ld  [ %g1 + 0x1a8 ], %o0	! 4001a1a8 <Stack_check_Interrupt_stack+0x4>

40006f30:	80 a2 20 00 	cmp  %o0, 0
                                   
40006f34:	02 80 00 07 	be  40006f50 <rtems_stack_checker_switch_extension+0x68>

40006f38:	94 10 20 10 	mov  0x10, %o2
                                
  return memcmp(
                                                     
40006f3c:	40 00 2c 94 	call  4001218c <memcmp>
                       
40006f40:	92 17 20 fc 	or  %i4, 0xfc, %o1
                            
  if ( stack->area != NULL && !Stack_check_Is_sanity_pattern_valid( stack ) ) {

40006f44:	80 a2 20 00 	cmp  %o0, 0
                                   
40006f48:	12 80 00 2c 	bne  40006ff8 <rtems_stack_checker_switch_extension+0x110>

40006f4c:	13 12 53 95 	sethi  %hi(0x494e5400), %o1
                   
    rtems_fatal(
                                                     
      RTEMS_FATAL_SOURCE_STACK_CHECKER,
                              
      rtems_build_name( 'I', 'N', 'T', 'R' )
                         
    );
                                                               
  }
                                                                  
}
                                                                    
40006f50:	81 c7 e0 08 	ret 
                                          
40006f54:	81 e8 00 00 	restore 
                                      
40006f58:	90 10 00 1d 	mov  %i5, %o0
                                 <== NOT EXECUTED
40006f5c:	13 10 00 4d 	sethi  %hi(0x40013400), %o1
                   <== NOT EXECUTED
40006f60:	40 00 2c 8b 	call  4001218c <memcmp>
                       <== NOT EXECUTED
40006f64:	92 12 60 fc 	or  %o1, 0xfc, %o1	! 400134fc <Stack_check_Sanity_pattern>
<== NOT EXECUTED
40006f68:	b6 10 00 08 	mov  %o0, %i3
                                 <== NOT EXECUTED
  printk("BLOWN STACK!!!\n");
                                        
40006f6c:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40006f70:	7f ff f2 86 	call  40003988 <printk>
                       
40006f74:	90 12 20 20 	or  %o0, 0x20, %o0	! 40013420 <rtems_filesystem_null_handlers+0x44>

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

40006f78:	92 10 00 18 	mov  %i0, %o1
                                 
40006f7c:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40006f80:	7f ff f2 82 	call  40003988 <printk>
                       
40006f84:	90 12 20 30 	or  %o0, 0x30, %o0	! 40013430 <rtems_filesystem_null_handlers+0x54>

  printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
  
40006f88:	d2 06 20 08 	ld  [ %i0 + 8 ], %o1
                          
40006f8c:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40006f90:	7f ff f2 7e 	call  40003988 <printk>
                       
40006f94:	90 12 20 50 	or  %o0, 0x50, %o0	! 40013450 <rtems_filesystem_null_handlers+0x74>

  printk(
                                                            
40006f98:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        
40006f9c:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40006fa0:	7f ff f2 7a 	call  40003988 <printk>
                       
40006fa4:	90 12 20 68 	or  %o0, 0x68, %o0	! 40013468 <rtems_filesystem_null_handlers+0x8c>

  _Thread_Get_name(running, name, sizeof(name));
                     
40006fa8:	94 10 20 20 	mov  0x20, %o2
                                
40006fac:	92 07 bf e0 	add  %fp, -32, %o1
                            
40006fb0:	40 00 12 07 	call  4000b7cc <_Thread_Get_name>
             
40006fb4:	90 10 00 18 	mov  %i0, %o0
                                 
  printk("task name string: %s\n", name);
                            
40006fb8:	92 07 bf e0 	add  %fp, -32, %o1
                            
40006fbc:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40006fc0:	7f ff f2 72 	call  40003988 <printk>
                       
40006fc4:	90 12 20 80 	or  %o0, 0x80, %o0	! 40013480 <rtems_filesystem_null_handlers+0xa4>

    (unsigned long) stack->size,
                                     
40006fc8:	d2 06 20 cc 	ld  [ %i0 + 0xcc ], %o1
                       
    (intptr_t) stack->area,
                                          
40006fcc:	d4 06 20 d0 	ld  [ %i0 + 0xd0 ], %o2
                       
  printk(
                                                            
40006fd0:	96 02 80 09 	add  %o2, %o1, %o3
                            
40006fd4:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40006fd8:	7f ff f2 6c 	call  40003988 <printk>
                       
40006fdc:	90 12 20 98 	or  %o0, 0x98, %o0	! 40013498 <rtems_filesystem_null_handlers+0xbc>

  if (!pattern_ok) {
                                                 
40006fe0:	80 a6 e0 00 	cmp  %i3, 0
                                   
40006fe4:	12 80 00 08 	bne  40007004 <rtems_stack_checker_switch_extension+0x11c>

40006fe8:	96 07 60 10 	add  %i5, 0x10, %o3
                           
40006fec:	d2 06 20 0c 	ld  [ %i0 + 0xc ], %o1
                        <== NOT EXECUTED
40006ff0:	40 00 17 16 	call  4000cc48 <_Terminate>
                   
40006ff4:	90 10 20 08 	mov  8, %o0
                                   
40006ff8:	90 10 20 08 	mov  8, %o0
                                   <== NOT EXECUTED
40006ffc:	40 00 17 13 	call  4000cc48 <_Terminate>
                   <== NOT EXECUTED
40007000:	92 12 60 52 	or  %o1, 0x52, %o1
                            <== NOT EXECUTED
    printk(
                                                          
40007004:	94 10 00 1d 	mov  %i5, %o2
                                 
40007008:	92 10 20 10 	mov  0x10, %o1
                                
4000700c:	11 10 00 4d 	sethi  %hi(0x40013400), %o0
                   
40007010:	7f ff f2 5e 	call  40003988 <printk>
                       
40007014:	90 12 20 c8 	or  %o0, 0xc8, %o0	! 400134c8 <rtems_filesystem_null_handlers+0xec>

40007018:	10 bf ff f6 	b  40006ff0 <rtems_stack_checker_switch_extension+0x108>

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