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 (1135B)


      1/*
      2 * arch/xtensa/include/asm/stacktrace.h
      3 *
      4 * This file is subject to the terms and conditions of the GNU General Public
      5 * License.  See the file "COPYING" in the main directory of this archive
      6 * for more details.
      7 *
      8 * Copyright (C) 2001 - 2013 Tensilica Inc.
      9 */
     10#ifndef _XTENSA_STACKTRACE_H
     11#define _XTENSA_STACKTRACE_H
     12
     13#include <linux/sched.h>
     14
     15struct stackframe {
     16	unsigned long pc;
     17	unsigned long sp;
     18};
     19
     20static __always_inline unsigned long *stack_pointer(struct task_struct *task)
     21{
     22	unsigned long sp;
     23
     24	if (!task || task == current)
     25		sp = current_stack_pointer;
     26	else
     27		sp = task->thread.sp;
     28
     29	return (unsigned long *)sp;
     30}
     31
     32void walk_stackframe(unsigned long *sp,
     33		int (*fn)(struct stackframe *frame, void *data),
     34		void *data);
     35
     36void xtensa_backtrace_kernel(struct pt_regs *regs, unsigned int depth,
     37			     int (*kfn)(struct stackframe *frame, void *data),
     38			     int (*ufn)(struct stackframe *frame, void *data),
     39			     void *data);
     40void xtensa_backtrace_user(struct pt_regs *regs, unsigned int depth,
     41			   int (*ufn)(struct stackframe *frame, void *data),
     42			   void *data);
     43
     44#endif /* _XTENSA_STACKTRACE_H */