cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

stacktrace.h (1107B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __ASM_STACKTRACE_H
      3#define __ASM_STACKTRACE_H
      4
      5#include <asm/ptrace.h>
      6#include <linux/llist.h>
      7
      8struct stackframe {
      9	/*
     10	 * FP member should hold R7 when CONFIG_THUMB2_KERNEL is enabled
     11	 * and R11 otherwise.
     12	 */
     13	unsigned long fp;
     14	unsigned long sp;
     15	unsigned long lr;
     16	unsigned long pc;
     17
     18	/* address of the LR value on the stack */
     19	unsigned long *lr_addr;
     20#ifdef CONFIG_KRETPROBES
     21	struct llist_node *kr_cur;
     22	struct task_struct *tsk;
     23#endif
     24};
     25
     26static __always_inline
     27void arm_get_current_stackframe(struct pt_regs *regs, struct stackframe *frame)
     28{
     29		frame->fp = frame_pointer(regs);
     30		frame->sp = regs->ARM_sp;
     31		frame->lr = regs->ARM_lr;
     32		frame->pc = regs->ARM_pc;
     33#ifdef CONFIG_KRETPROBES
     34		frame->kr_cur = NULL;
     35		frame->tsk = current;
     36#endif
     37}
     38
     39extern int unwind_frame(struct stackframe *frame);
     40extern void walk_stackframe(struct stackframe *frame,
     41			    int (*fn)(struct stackframe *, void *), void *data);
     42extern void dump_mem(const char *lvl, const char *str, unsigned long bottom,
     43		     unsigned long top);
     44
     45#endif	/* __ASM_STACKTRACE_H */