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

Quelle  ptrace.h   Sprache: C

 
/* SPDX-License-Identifier: GPL-2.0 */

#ifndef __ASM_CSKY_PTRACE_H
#define __ASM_CSKY_PTRACE_H

#include <uapi/asm/ptrace.h>
#include <asm/traps.h>
#include <linux/types.h>
#include <linux/compiler.h>

#ifndef __ASSEMBLY__

#define PS_S 0x80000000 /* Supervisor Mode */

#define USR_BKPT 0x1464

#define arch_has_single_step() (1)
#define current_pt_regs() \
({ (struct pt_regs *)((char *)current_thread_info() + THREAD_SIZE) - 1; })

#define user_stack_pointer(regs) ((regs)->usp)

#define user_mode(regs) (!((regs)->sr & PS_S))
#define instruction_pointer(regs) ((regs)->pc)
#define profile_pc(regs) instruction_pointer(regs)
#define trap_no(regs) ((regs->sr >> 16) & 0xff)

static inline void instruction_pointer_set(struct pt_regs *regs,
        unsigned long val)
{
 regs->pc = val;
}

#if defined(__CSKYABIV2__)
#define MAX_REG_OFFSET offsetof(struct pt_regs, dcsr)
#else
#define MAX_REG_OFFSET offsetof(struct pt_regs, regs[9])
#endif

static inline bool in_syscall(struct pt_regs const *regs)
{
 return ((regs->sr >> 16) & 0xff) == VEC_TRAP0;
}

static inline void forget_syscall(struct pt_regs *regs)
{
 regs->sr &= ~(0xff << 16);
}

static inline unsigned long regs_return_value(struct pt_regs *regs)
{
 return regs->a0;
}

static inline void regs_set_return_value(struct pt_regs *regs,
      unsigned long val)
{
 regs->a0 = val;
}

/* Valid only for Kernel mode traps. */
static inline unsigned long kernel_stack_pointer(struct pt_regs *regs)
{
 return regs->usp;
}

static inline unsigned long frame_pointer(struct pt_regs *regs)
{
 return regs->regs[4];
}
static inline void frame_pointer_set(struct pt_regs *regs,
         unsigned long val)
{
 regs->regs[4] = val;
}

extern int regs_query_register_offset(const char *name);
extern unsigned long regs_get_kernel_stack_nth(struct pt_regs *regs,
      unsigned int n);

/*
 * regs_get_register() - get register value from its offset
 * @regs:      pt_regs from which register value is gotten
 * @offset:    offset of the register.
 *
 * regs_get_register returns the value of a register whose offset from @regs.
 * The @offset is the offset of the register in struct pt_regs.
 * If @offset is bigger than MAX_REG_OFFSET, this returns 0.
 */

static inline unsigned long regs_get_register(struct pt_regs *regs,
      unsigned int offset)
{
 if (unlikely(offset > MAX_REG_OFFSET))
  return 0;

 return *(unsigned long *)((unsigned long)regs + offset);
}

asmlinkage int syscall_trace_enter(struct pt_regs *regs);
asmlinkage void syscall_trace_exit(struct pt_regs *regs);
#endif /* __ASSEMBLY__ */
#endif /* __ASM_CSKY_PTRACE_H */

Messung V0.5
C=95 H=96 G=95

¤ Dauer der Verarbeitung: 0.1 Sekunden  (vorverarbeitet)  ¤

*© 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.