Loading arch/sparc/Kconfig.debug +1 −4 Original line number Diff line number Diff line Loading @@ -19,13 +19,10 @@ config DEBUG_DCFLUSH bool "D-cache flush debugging" depends on SPARC64 && DEBUG_KERNEL config STACK_DEBUG bool "Stack Overflow Detection Support" config MCOUNT bool depends on SPARC64 depends on STACK_DEBUG || FUNCTION_TRACER depends on FUNCTION_TRACER default y config FRAME_POINTER Loading arch/sparc/lib/mcount.S +0 −74 Original line number Diff line number Diff line Loading @@ -7,26 +7,11 @@ #include <linux/linkage.h> #include <asm/ptrace.h> #include <asm/thread_info.h> /* * This is the main variant and is called by C code. GCC's -pg option * automatically instruments every C function with a call to this. */ #ifdef CONFIG_STACK_DEBUG #define OVSTACKSIZE 4096 /* lets hope this is enough */ .data .align 8 panicstring: .asciz "Stack overflow\n" .align 8 ovstack: .skip OVSTACKSIZE #endif .text .align 32 .globl _mcount Loading @@ -35,65 +20,6 @@ ovstack: .type mcount,#function _mcount: mcount: #ifdef CONFIG_STACK_DEBUG /* * Check whether %sp is dangerously low. */ ldub [%g6 + TI_FPDEPTH], %g1 srl %g1, 1, %g3 add %g3, 1, %g3 sllx %g3, 8, %g3 ! each fpregs frame is 256b add %g3, 192, %g3 add %g6, %g3, %g3 ! where does task_struct+frame end? sub %g3, STACK_BIAS, %g3 cmp %sp, %g3 bg,pt %xcc, 1f nop lduh [%g6 + TI_CPU], %g1 sethi %hi(hardirq_stack), %g3 or %g3, %lo(hardirq_stack), %g3 sllx %g1, 3, %g1 ldx [%g3 + %g1], %g7 sub %g7, STACK_BIAS, %g7 cmp %sp, %g7 bleu,pt %xcc, 2f sethi %hi(THREAD_SIZE), %g3 add %g7, %g3, %g7 cmp %sp, %g7 blu,pn %xcc, 1f 2: sethi %hi(softirq_stack), %g3 or %g3, %lo(softirq_stack), %g3 ldx [%g3 + %g1], %g7 sub %g7, STACK_BIAS, %g7 cmp %sp, %g7 bleu,pt %xcc, 3f sethi %hi(THREAD_SIZE), %g3 add %g7, %g3, %g7 cmp %sp, %g7 blu,pn %xcc, 1f nop /* If we are already on ovstack, don't hop onto it * again, we are already trying to output the stack overflow * message. */ 3: sethi %hi(ovstack), %g7 ! cant move to panic stack fast enough or %g7, %lo(ovstack), %g7 add %g7, OVSTACKSIZE, %g3 sub %g3, STACK_BIAS + 192, %g3 sub %g7, STACK_BIAS, %g7 cmp %sp, %g7 blu,pn %xcc, 2f cmp %sp, %g3 bleu,pn %xcc, 1f nop 2: mov %g3, %sp sethi %hi(panicstring), %g3 call prom_printf or %g3, %lo(panicstring), %o0 call prom_halt nop 1: #endif #ifdef CONFIG_FUNCTION_TRACER #ifdef CONFIG_DYNAMIC_FTRACE /* Do nothing, the retl/nop below is all we need. */ Loading Loading
arch/sparc/Kconfig.debug +1 −4 Original line number Diff line number Diff line Loading @@ -19,13 +19,10 @@ config DEBUG_DCFLUSH bool "D-cache flush debugging" depends on SPARC64 && DEBUG_KERNEL config STACK_DEBUG bool "Stack Overflow Detection Support" config MCOUNT bool depends on SPARC64 depends on STACK_DEBUG || FUNCTION_TRACER depends on FUNCTION_TRACER default y config FRAME_POINTER Loading
arch/sparc/lib/mcount.S +0 −74 Original line number Diff line number Diff line Loading @@ -7,26 +7,11 @@ #include <linux/linkage.h> #include <asm/ptrace.h> #include <asm/thread_info.h> /* * This is the main variant and is called by C code. GCC's -pg option * automatically instruments every C function with a call to this. */ #ifdef CONFIG_STACK_DEBUG #define OVSTACKSIZE 4096 /* lets hope this is enough */ .data .align 8 panicstring: .asciz "Stack overflow\n" .align 8 ovstack: .skip OVSTACKSIZE #endif .text .align 32 .globl _mcount Loading @@ -35,65 +20,6 @@ ovstack: .type mcount,#function _mcount: mcount: #ifdef CONFIG_STACK_DEBUG /* * Check whether %sp is dangerously low. */ ldub [%g6 + TI_FPDEPTH], %g1 srl %g1, 1, %g3 add %g3, 1, %g3 sllx %g3, 8, %g3 ! each fpregs frame is 256b add %g3, 192, %g3 add %g6, %g3, %g3 ! where does task_struct+frame end? sub %g3, STACK_BIAS, %g3 cmp %sp, %g3 bg,pt %xcc, 1f nop lduh [%g6 + TI_CPU], %g1 sethi %hi(hardirq_stack), %g3 or %g3, %lo(hardirq_stack), %g3 sllx %g1, 3, %g1 ldx [%g3 + %g1], %g7 sub %g7, STACK_BIAS, %g7 cmp %sp, %g7 bleu,pt %xcc, 2f sethi %hi(THREAD_SIZE), %g3 add %g7, %g3, %g7 cmp %sp, %g7 blu,pn %xcc, 1f 2: sethi %hi(softirq_stack), %g3 or %g3, %lo(softirq_stack), %g3 ldx [%g3 + %g1], %g7 sub %g7, STACK_BIAS, %g7 cmp %sp, %g7 bleu,pt %xcc, 3f sethi %hi(THREAD_SIZE), %g3 add %g7, %g3, %g7 cmp %sp, %g7 blu,pn %xcc, 1f nop /* If we are already on ovstack, don't hop onto it * again, we are already trying to output the stack overflow * message. */ 3: sethi %hi(ovstack), %g7 ! cant move to panic stack fast enough or %g7, %lo(ovstack), %g7 add %g7, OVSTACKSIZE, %g3 sub %g3, STACK_BIAS + 192, %g3 sub %g7, STACK_BIAS, %g7 cmp %sp, %g7 blu,pn %xcc, 2f cmp %sp, %g3 bleu,pn %xcc, 1f nop 2: mov %g3, %sp sethi %hi(panicstring), %g3 call prom_printf or %g3, %lo(panicstring), %o0 call prom_halt nop 1: #endif #ifdef CONFIG_FUNCTION_TRACER #ifdef CONFIG_DYNAMIC_FTRACE /* Do nothing, the retl/nop below is all we need. */ Loading