=============================================================================== 0000000040023d30 : #endif cpu_self_index = _Per_CPU_Get_index( cpu_self ); stack = &Stack_check_Interrupt_stack[ cpu_self_index ]; if ( stack->area == NULL ) { 40023d30: 90000723 adrp x3, 40107000 40023d34: 9125e064 add x4, x3, #0x978 40023d38: f9400480 ldr x0, [x4, #8] 40023d3c: b4000040 cbz x0, 40023d44 40023d40: d65f03c0 ret { 40023d44: a9be7bfd stp x29, x30, [sp, #-32]! stack->area = cpu_self->interrupt_stack_low; 40023d48: 90000720 adrp x0, 40107000 40023d4c: 91270005 add x5, x0, #0x9c0 { 40023d50: 910003fd mov x29, sp 40023d54: a90153f3 stp x19, x20, [sp, #16] return memcmp( 40023d58: d00000a1 adrp x1, 40039000 <__trunctfdf2+0x2a0> 40023d5c: d2800202 mov x2, #0x10 // #16 stack->area = cpu_self->interrupt_stack_low; 40023d60: f944e013 ldr x19, [x0, #2496] return memcmp( 40023d64: 913c6021 add x1, x1, #0xf18 stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high - 40023d68: f94004b4 ldr x20, [x5, #8] stack->area = cpu_self->interrupt_stack_low; 40023d6c: f9000493 str x19, [x4, #8] return memcmp( 40023d70: aa1303e0 mov x0, x19 stack->size = (size_t) ( (char *) cpu_self->interrupt_stack_high - 40023d74: cb130294 sub x20, x20, x19 40023d78: f904bc74 str x20, [x3, #2424] return memcmp( 40023d7c: 9400370b bl 400319a8 (char *) cpu_self->interrupt_stack_low ); /* * Sanity pattern has been added by Stack_check_Prepare_interrupt_stack() */ if ( !Stack_check_Is_sanity_pattern_valid( stack ) ) { 40023d80: 350000e0 cbnz w0, 40023d9c <== NEVER TAKEN memset( 40023d84: d1004282 sub x2, x20, #0x10 40023d88: 91004260 add x0, x19, #0x10 } #if defined(RTEMS_SMP) _Thread_Dispatch_enable( cpu_self ); #endif } 40023d8c: a94153f3 ldp x19, x20, [sp, #16] memset( 40023d90: 528014a1 mov w1, #0xa5 // #165 } 40023d94: a8c27bfd ldp x29, x30, [sp], #32 memset( 40023d98: 14003743 b 40031aa4 40023d9c: d28a8a41 mov x1, #0x5452 // #21586 <== NOT EXECUTED 40023da0: f2a929c1 movk x1, #0x494e, lsl #16 <== NOT EXECUTED 40023da4: 52800100 mov w0, #0x8 // #8 <== NOT EXECUTED 40023da8: 940002ba bl 40024890 <_Terminate> <== NOT EXECUTED 40023dac: 00000000 udf #0 =============================================================================== 0000000040023db0 : */ void rtems_stack_checker_switch_extension( Thread_Control *running, Thread_Control *heir ) { 40023db0: a9ba7bfd stp x29, x30, [sp, #-96]! 40023db4: 910003fd mov x29, sp 40023db8: a9025bf5 stp x21, x22, [sp, #32] if ( sp < the_stack->area ) { 40023dbc: 91052016 add x22, x0, #0x148 { 40023dc0: a90153f3 stp x19, x20, [sp, #16] 40023dc4: aa0003f3 mov x19, x0 if ( sp < the_stack->area ) { 40023dc8: f94006d4 ldr x20, [x22, #8] { 40023dcc: f9001bf7 str x23, [sp, #48] if ( sp < the_stack->area ) { 40023dd0: eb1d029f cmp x20, x29 40023dd4: 54000328 b.hi 40023e38 // b.pmore<== NEVER TAKEN return memcmp( 40023dd8: d00000b5 adrp x21, 40039000 <__trunctfdf2+0x2a0> 40023ddc: 913c62b5 add x21, x21, #0xf18 40023de0: aa1503e1 mov x1, x21 40023de4: aa1403e0 mov x0, x20 40023de8: d2800202 mov x2, #0x10 // #16 40023dec: 940036ef bl 400319a8 if ( sp > (the_stack->area + the_stack->size) ) { 40023df0: f940a661 ldr x1, [x19, #328] return memcmp( 40023df4: 2a0003f7 mov w23, w0 if ( sp > (the_stack->area + the_stack->size) ) { 40023df8: 8b010281 add x1, x20, x1 40023dfc: eb0103bf cmp x29, x1 40023e00: 54000288 b.hi 40023e50 // b.pmore<== NEVER TAKEN #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 ) { 40023e04: 35000260 cbnz w0, 40023e50 } #endif stack = &Stack_check_Interrupt_stack[ _SMP_Get_current_processor() ]; if ( stack->area != NULL && !Stack_check_Is_sanity_pattern_valid( stack ) ) { 40023e08: 90000720 adrp x0, 40107000 40023e0c: f944c000 ldr x0, [x0, #2432] 40023e10: b40000a0 cbz x0, 40023e24 <== NEVER TAKEN return memcmp( 40023e14: aa1503e1 mov x1, x21 40023e18: d2800202 mov x2, #0x10 // #16 40023e1c: 940036e3 bl 400319a8 if ( stack->area != NULL && !Stack_check_Is_sanity_pattern_valid( stack ) ) { 40023e20: 35000680 cbnz w0, 40023ef0 <== NEVER TAKEN rtems_fatal( RTEMS_FATAL_SOURCE_STACK_CHECKER, rtems_build_name( 'I', 'N', 'T', 'R' ) ); } } 40023e24: a94153f3 ldp x19, x20, [sp, #16] 40023e28: a9425bf5 ldp x21, x22, [sp, #32] 40023e2c: f9401bf7 ldr x23, [sp, #48] 40023e30: a8c67bfd ldp x29, x30, [sp], #96 40023e34: d65f03c0 ret return memcmp( 40023e38: aa1403e0 mov x0, x20 <== NOT EXECUTED 40023e3c: d00000a1 adrp x1, 40039000 <__trunctfdf2+0x2a0> <== NOT EXECUTED 40023e40: d2800202 mov x2, #0x10 // #16 <== NOT EXECUTED 40023e44: 913c6021 add x1, x1, #0xf18 <== NOT EXECUTED 40023e48: 940036d8 bl 400319a8 <== NOT EXECUTED 40023e4c: 2a0003f7 mov w23, w0 <== NOT EXECUTED printk("BLOWN STACK!!!\n"); 40023e50: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023e54: 9138c000 add x0, x0, #0xe30 40023e58: 94001036 bl 40027f30 printk("task control block: 0x%08" PRIxPTR "\n", (intptr_t) running); 40023e5c: aa1303e1 mov x1, x19 40023e60: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023e64: 91390000 add x0, x0, #0xe40 40023e68: 94001032 bl 40027f30 printk("task ID: 0x%08lx\n", (unsigned long) running->Object.id); 40023e6c: b9401261 ldr w1, [x19, #16] 40023e70: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023e74: 91398000 add x0, x0, #0xe60 40023e78: 9400102e bl 40027f30 printk( 40023e7c: b9401a61 ldr w1, [x19, #24] 40023e80: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023e84: 9139e000 add x0, x0, #0xe78 40023e88: 9400102a bl 40027f30 _Thread_Get_name(running, name, sizeof(name)); 40023e8c: d2800402 mov x2, #0x20 // #32 40023e90: 910103a1 add x1, x29, #0x40 40023e94: aa1303e0 mov x0, x19 40023e98: 940007ee bl 40025e50 <_Thread_Get_name> printk("task name string: %s\n", name); 40023e9c: 910103a1 add x1, x29, #0x40 40023ea0: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023ea4: 913a4000 add x0, x0, #0xe90 40023ea8: 94001022 bl 40027f30 (intptr_t) stack->area, 40023eac: f94006c2 ldr x2, [x22, #8] printk( 40023eb0: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023eb4: 913aa000 add x0, x0, #0xea8 (unsigned long) stack->size, 40023eb8: f940a661 ldr x1, [x19, #328] printk( 40023ebc: 8b010043 add x3, x2, x1 40023ec0: 9400101c bl 40027f30 if (!pattern_ok) { 40023ec4: 35000097 cbnz w23, 40023ed4 <== ALWAYS TAKEN 40023ec8: b9401a61 ldr w1, [x19, #24] 40023ecc: 52800100 mov w0, #0x8 // #8 40023ed0: 94000270 bl 40024890 <_Terminate> printk( 40023ed4: 91004283 add x3, x20, #0x10 40023ed8: aa1403e2 mov x2, x20 40023edc: d00000a0 adrp x0, 40039000 <__trunctfdf2+0x2a0> 40023ee0: d2800201 mov x1, #0x10 // #16 40023ee4: 913b8000 add x0, x0, #0xee0 40023ee8: 94001012 bl 40027f30 40023eec: 17fffff7 b 40023ec8 40023ef0: d28a8a41 mov x1, #0x5452 // #21586 <== NOT EXECUTED 40023ef4: f2a929c1 movk x1, #0x494e, lsl #16 <== NOT EXECUTED 40023ef8: 52800100 mov w0, #0x8 // #8 <== NOT EXECUTED 40023efc: 94000265 bl 40024890 <_Terminate> <== NOT EXECUTED