RTEMS-5
Annotated Report
Fri Aug 10 17:13:27 2018
40003d54 <rtems_stack_checker_begin_extension>:
static inline uint32_t _Per_CPU_Get_index( const Per_CPU_Control *cpu )
{
const Per_CPU_Control_envelope *per_cpu_envelope =
( const Per_CPU_Control_envelope * ) cpu;
return ( uint32_t ) ( per_cpu_envelope - &_Per_CPU_Information[ 0 ] );
40003d54: 07 33 33 33 sethi %hi(0xcccccc00), %g3
40003d58: 86 10 e0 cd or %g3, 0xcd, %g3 ! cccccccd <RAM_END+0x8c8ccccd>
40003d5c: 03 10 00 5b sethi %hi(0x40016c00), %g1
#endif
cpu_self_index = _Per_CPU_Get_index( cpu_self );
stack = &Stack_check_Interrupt_stack[ cpu_self_index ];
if ( stack->area == NULL ) {
40003d60: 05 10 00 56 sethi %hi(0x40015800), %g2
40003d64: 82 10 60 00 mov %g1, %g1
40003d68: 84 10 a3 18 or %g2, 0x318, %g2
40003d6c: 82 21 80 01 sub %g6, %g1, %g1
40003d70: 83 38 60 04 sra %g1, 4, %g1
40003d74: 82 58 40 03 smul %g1, %g3, %g1
40003d78: 83 28 60 03 sll %g1, 3, %g1
40003d7c: 86 00 80 01 add %g2, %g1, %g3
40003d80: da 00 e0 04 ld [ %g3 + 4 ], %o5
40003d84: 80 a3 60 00 cmp %o5, 0
40003d88: 22 80 00 04 be,a 40003d98 <rtems_stack_checker_begin_extension+0x44>
<== ALWAYS TAKEN
40003d8c: d0 01 a0 08 ld [ %g6 + 8 ], %o0
}
#if defined(RTEMS_SMP)
_Thread_Dispatch_enable( cpu_self );
#endif
}
40003d90: 81 c3 e0 08 retl
<== NOT EXECUTED
40003d94: 01 00 00 00 nop
<== NOT EXECUTED
stack->area = cpu_self->interrupt_stack_low;
40003d98: d0 20 e0 04 st %o0, [ %g3 + 4 ]
Stack_check_Dope_stack( stack );
40003d9c: 92 10 20 a5 mov 0xa5, %o1
stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -
40003da0: c8 01 a0 0c ld [ %g6 + 0xc ], %g4
40003da4: 88 21 00 08 sub %g4, %o0, %g4
Stack_check_Dope_stack( stack );
40003da8: 94 10 00 04 mov %g4, %o2
stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high -
40003dac: c8 20 80 01 st %g4, [ %g2 + %g1 ]
Stack_check_Dope_stack( stack );
40003db0: 82 13 c0 00 mov %o7, %g1
40003db4: 40 00 31 44 call 400102c4 <memset>
40003db8: 9e 10 40 00 mov %g1, %o7
40003dbc <rtems_stack_checker_switch_extension>:
*/
void rtems_stack_checker_switch_extension(
Thread_Control *running RTEMS_UNUSED,
Thread_Control *heir RTEMS_UNUSED
)
{
40003dbc: 9d e3 bf 80 save %sp, -128, %sp
<== NOT EXECUTED
if ( sp < the_stack->area ) {
40003dc0: fa 06 20 d0 ld [ %i0 + 0xd0 ], %i5
<== NOT EXECUTED
40003dc4: b8 07 60 08 add %i5, 8, %i4
<== NOT EXECUTED
40003dc8: 13 10 00 4b sethi %hi(0x40012c00), %o1
<== NOT EXECUTED
40003dcc: 94 10 20 10 mov 0x10, %o2
<== NOT EXECUTED
40003dd0: 90 10 00 1c mov %i4, %o0
<== NOT EXECUTED
40003dd4: 80 a7 80 1d cmp %fp, %i5
<== NOT EXECUTED
40003dd8: 0a 80 00 0e bcs 40003e10 <rtems_stack_checker_switch_extension+0x54>
<== NOT EXECUTED
40003ddc: 92 12 61 44 or %o1, 0x144, %o1
<== NOT EXECUTED
40003de0: 40 00 30 d4 call 40010130 <memcmp>
<== NOT EXECUTED
40003de4: 01 00 00 00 nop
<== NOT EXECUTED
if ( sp > (the_stack->area + the_stack->size) ) {
40003de8: c2 06 20 cc ld [ %i0 + 0xcc ], %g1
<== NOT EXECUTED
40003dec: 82 07 40 01 add %i5, %g1, %g1
<== NOT EXECUTED
40003df0: 80 a7 80 01 cmp %fp, %g1
<== NOT EXECUTED
40003df4: 18 80 00 0a bgu 40003e1c <rtems_stack_checker_switch_extension+0x60>
<== NOT EXECUTED
40003df8: b6 10 00 08 mov %o0, %i3
<== NOT EXECUTED
*/
sp_ok = Stack_check_Frame_pointer_in_range( running );
pattern_ok = Stack_check_Is_pattern_valid( running );
if ( !sp_ok || !pattern_ok ) {
40003dfc: 80 a2 20 00 cmp %o0, 0
<== NOT EXECUTED
40003e00: 12 80 00 08 bne 40003e20 <rtems_stack_checker_switch_extension+0x64>
<== NOT EXECUTED
40003e04: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
Stack_check_report_blown_task( running, pattern_ok );
}
}
40003e08: 81 c7 e0 08 ret
<== NOT EXECUTED
40003e0c: 81 e8 00 00 restore
<== NOT EXECUTED
40003e10: 40 00 30 c8 call 40010130 <memcmp>
<== NOT EXECUTED
40003e14: 01 00 00 00 nop
<== NOT EXECUTED
40003e18: b6 10 00 08 mov %o0, %i3
<== NOT EXECUTED
printk("BLOWN STACK!!!\n");
40003e1c: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003e20: 40 00 0a 40 call 40006720 <printk>
<== NOT EXECUTED
40003e24: 90 12 20 68 or %o0, 0x68, %o0 ! 40012c68 <rtems_test_name+0x108>
<== NOT EXECUTED
printk("task control block: 0x%08" PRIxPTR "\n", (intptr_t) running);
40003e28: 92 10 00 18 mov %i0, %o1
<== NOT EXECUTED
40003e2c: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003e30: 40 00 0a 3c call 40006720 <printk>
<== NOT EXECUTED
40003e34: 90 12 20 78 or %o0, 0x78, %o0 ! 40012c78 <rtems_test_name+0x118>
<== NOT EXECUTED
printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id);
40003e38: d2 06 20 08 ld [ %i0 + 8 ], %o1
<== NOT EXECUTED
40003e3c: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003e40: 40 00 0a 38 call 40006720 <printk>
<== NOT EXECUTED
40003e44: 90 12 20 98 or %o0, 0x98, %o0 ! 40012c98 <rtems_test_name+0x138>
<== NOT EXECUTED
printk(
40003e48: d2 06 20 0c ld [ %i0 + 0xc ], %o1
<== NOT EXECUTED
40003e4c: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003e50: 40 00 0a 34 call 40006720 <printk>
<== NOT EXECUTED
40003e54: 90 12 20 b0 or %o0, 0xb0, %o0 ! 40012cb0 <rtems_test_name+0x150>
<== NOT EXECUTED
_Thread_Get_name(running, name, sizeof(name));
40003e58: 94 10 20 20 mov 0x20, %o2
<== NOT EXECUTED
40003e5c: 92 07 bf e0 add %fp, -32, %o1
<== NOT EXECUTED
40003e60: 40 00 1f 88 call 4000bc80 <_Thread_Get_name>
<== NOT EXECUTED
40003e64: 90 10 00 18 mov %i0, %o0
<== NOT EXECUTED
printk("task name string: %s\n", name);
40003e68: 92 07 bf e0 add %fp, -32, %o1
<== NOT EXECUTED
40003e6c: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003e70: 40 00 0a 2c call 40006720 <printk>
<== NOT EXECUTED
40003e74: 90 12 20 c8 or %o0, 0xc8, %o0 ! 40012cc8 <rtems_test_name+0x168>
<== NOT EXECUTED
(unsigned long) stack->size,
40003e78: d2 06 20 cc ld [ %i0 + 0xcc ], %o1
<== NOT EXECUTED
(intptr_t) stack->area,
40003e7c: d4 06 20 d0 ld [ %i0 + 0xd0 ], %o2
<== NOT EXECUTED
printk(
40003e80: 96 02 80 09 add %o2, %o1, %o3
<== NOT EXECUTED
40003e84: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003e88: 40 00 0a 26 call 40006720 <printk>
<== NOT EXECUTED
40003e8c: 90 12 20 e0 or %o0, 0xe0, %o0 ! 40012ce0 <rtems_test_name+0x180>
<== NOT EXECUTED
if (!pattern_ok) {
40003e90: 80 a6 e0 00 cmp %i3, 0
<== NOT EXECUTED
40003e94: 12 80 00 05 bne 40003ea8 <rtems_stack_checker_switch_extension+0xec>
<== NOT EXECUTED
40003e98: 96 07 60 18 add %i5, 0x18, %o3
<== NOT EXECUTED
40003e9c: d2 06 20 0c ld [ %i0 + 0xc ], %o1
<== NOT EXECUTED
40003ea0: 40 00 13 5a call 40008c08 <_Terminate>
<== NOT EXECUTED
40003ea4: 90 10 20 08 mov 8, %o0
<== NOT EXECUTED
printk(
40003ea8: 94 10 00 1c mov %i4, %o2
<== NOT EXECUTED
40003eac: 92 10 20 10 mov 0x10, %o1
<== NOT EXECUTED
40003eb0: 11 10 00 4b sethi %hi(0x40012c00), %o0
<== NOT EXECUTED
40003eb4: 40 00 0a 1b call 40006720 <printk>
<== NOT EXECUTED
40003eb8: 90 12 21 10 or %o0, 0x110, %o0 ! 40012d10 <rtems_test_name+0x1b0>
<== NOT EXECUTED
40003ebc: 10 bf ff f9 b 40003ea0 <rtems_stack_checker_switch_extension+0xe4>
<== NOT EXECUTED
40003ec0: d2 06 20 0c ld [ %i0 + 0xc ], %o1
<== NOT EXECUTED