Quellcodebibliothek Statistik Leitseite products/sources/formale Sprachen/C/Linux/arch/sparc/lib/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  mcount.S   Sprache: Sparc

 
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2000 Anton Blanchard (anton@linuxcare.com)
 *
 * This file implements mcount(), which is used to collect profiling data.
 * This can also be tweaked for kernel stack overflow detection.
 */


#include <linux/export.h>
#include <linux/linkage.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.
 */


 .text
 .align  32
 .globl  _mcount
 .type  _mcount,#function
 EXPORT_SYMBOL(_mcount)
 .globl  mcount
 .type  mcount,#function
_mcount:
mcount:
#ifdef CONFIG_FUNCTION_TRACER
#ifdef CONFIG_DYNAMIC_FTRACE
 /* Do nothing, the retl/nop below is all we need.  */
#else
 sethi  %hi(ftrace_trace_function), %g1
 sethi  %hi(ftrace_stub), %g2
 ldx  [%g1 + %lo(ftrace_trace_function)], %g1
 or  %g2, %lo(ftrace_stub), %g2
 cmp  %g1, %g2
 be,pn  %icc, 1f
  mov  %i7, %g3
 save  %sp, -176, %sp
 mov  %g3, %o1
 jmpl  %g1, %o7
  mov  %i7, %o0
 ret
  restore
 /* not reached */
1:
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 sethi  %hi(ftrace_graph_return), %g1
 ldx  [%g1 + %lo(ftrace_graph_return)], %g3
 cmp  %g2, %g3
 bne,pn  %xcc, 5f
  sethi  %hi(ftrace_graph_entry_stub), %g2
 sethi  %hi(ftrace_graph_entry), %g1
 or  %g2, %lo(ftrace_graph_entry_stub), %g2
 ldx  [%g1 + %lo(ftrace_graph_entry)], %g1
 cmp  %g1, %g2
 be,pt  %xcc, 2f
  nop
5: mov  %i7, %g2
 mov  %fp, %g3
 save  %sp, -176, %sp
 mov  %g2, %l0
 ba,pt  %xcc, ftrace_graph_caller
  mov  %g3, %l1
#endif
2:
#endif
#endif
 retl
  nop
 .size  _mcount,.-_mcount
 .size  mcount,.-mcount

#ifdef CONFIG_FUNCTION_TRACER
 .globl  ftrace_stub
 .type  ftrace_stub,#function
ftrace_stub:
 retl
  nop
 .size  ftrace_stub,.-ftrace_stub
#ifdef CONFIG_DYNAMIC_FTRACE
 .globl  ftrace_caller
 .type  ftrace_caller,#function
ftrace_caller:
 mov  %i7, %g2
 mov  %fp, %g3
 save  %sp, -176, %sp
 mov  %g2, %o1
 mov  %g2, %l0
 mov  %g3, %l1
 .globl  ftrace_call
ftrace_call:
 call  ftrace_stub
  mov  %i7, %o0
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 .globl  ftrace_graph_call
ftrace_graph_call:
 call  ftrace_stub
  nop
#endif
 ret
  restore
#ifdef CONFIG_FUNCTION_GRAPH_TRACER
 .size  ftrace_graph_call,.-ftrace_graph_call
#endif
 .size  ftrace_call,.-ftrace_call
 .size  ftrace_caller,.-ftrace_caller
#endif
#endif

#ifdef CONFIG_FUNCTION_GRAPH_TRACER
ENTRY(ftrace_graph_caller)
 mov  %l0, %o0
 mov  %i7, %o1
 call  prepare_ftrace_return
  mov  %l1, %o2
 ret
  restore %o0, -8, %i7
END(ftrace_graph_caller)

ENTRY(return_to_handler)
 save  %sp, -176, %sp
 call  ftrace_return_to_handler
  mov  %fp, %o0
 jmpl  %o0 + 8, %g0
  restore
END(return_to_handler)
#endif

Messung V0.5
C=97 H=100 G=98

¤ Dauer der Verarbeitung: 0.4 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.