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

Quelle  stacktrace.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef _ASM_STACKTRACE_H
#define _ASM_STACKTRACE_H

#include <asm/ptrace.h>
#include <asm/asm.h>
#include <linux/stringify.h>

#ifdef CONFIG_KALLSYMS
extern int raw_show_trace;
extern unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
      unsigned long pc, unsigned long *ra);
extern unsigned long unwind_stack_by_address(unsigned long stack_page,
          unsigned long *sp,
          unsigned long pc,
          unsigned long *ra);
#else
#define raw_show_trace 1
static inline unsigned long unwind_stack(struct task_struct *task,
 unsigned long *sp, unsigned long pc, unsigned long *ra)
{
 return 0;
}
#endif

#define STR_PTR_LA    __stringify(PTR_LA)
#define STR_LONG_S    __stringify(LONG_S)
#define STR_LONG_L    __stringify(LONG_L)
#define STR_LONGSIZE  __stringify(LONGSIZE)

#define STORE_ONE_REG(r) \
    STR_LONG_S   " $" __stringify(r)",("STR_LONGSIZE"*"__stringify(r)")(%1)\n\t"

static __always_inline void prepare_frametrace(struct pt_regs *regs)
{
#ifndef CONFIG_KALLSYMS
 /*
 * Remove any garbage that may be in regs (specially func
 * addresses) to avoid show_raw_backtrace() to report them
 */

 memset(regs, 0, sizeof(*regs));
#endif
 __asm__ __volatile__(
  ".set push\n\t"
  ".set noat\n\t"
  /* Store $1 so we can use it */
  STR_LONG_S " $1,"STR_LONGSIZE"(%1)\n\t"
  /* Store the PC */
  "1: " STR_PTR_LA " $1, 1b\n\t"
  STR_LONG_S " $1,%0\n\t"
  STORE_ONE_REG(2)
  STORE_ONE_REG(3)
  STORE_ONE_REG(4)
  STORE_ONE_REG(5)
  STORE_ONE_REG(6)
  STORE_ONE_REG(7)
  STORE_ONE_REG(8)
  STORE_ONE_REG(9)
  STORE_ONE_REG(10)
  STORE_ONE_REG(11)
  STORE_ONE_REG(12)
  STORE_ONE_REG(13)
  STORE_ONE_REG(14)
  STORE_ONE_REG(15)
  STORE_ONE_REG(16)
  STORE_ONE_REG(17)
  STORE_ONE_REG(18)
  STORE_ONE_REG(19)
  STORE_ONE_REG(20)
  STORE_ONE_REG(21)
  STORE_ONE_REG(22)
  STORE_ONE_REG(23)
  STORE_ONE_REG(24)
  STORE_ONE_REG(25)
  STORE_ONE_REG(26)
  STORE_ONE_REG(27)
  STORE_ONE_REG(28)
  STORE_ONE_REG(29)
  STORE_ONE_REG(30)
  STORE_ONE_REG(31)
  /* Restore $1 */
  STR_LONG_L " $1,"STR_LONGSIZE"(%1)\n\t"
  ".set pop\n\t"
  : "=m" (regs->cp0_epc)
  : "r" (regs->regs)
  : "memory");
}

#endif /* _ASM_STACKTRACE_H */

Messung V0.5
C=94 H=86 G=89

¤ Dauer der Verarbeitung: 0.3 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.