From 76cb841cb886eef6b3bee341a2266c76578724ad Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 6 May 2024 03:02:30 +0200 Subject: Adding upstream version 4.19.249. Signed-off-by: Daniel Baumann --- arch/xtensa/oprofile/Makefile | 10 ++++++++++ arch/xtensa/oprofile/backtrace.c | 27 +++++++++++++++++++++++++++ arch/xtensa/oprofile/init.c | 26 ++++++++++++++++++++++++++ 3 files changed, 63 insertions(+) create mode 100644 arch/xtensa/oprofile/Makefile create mode 100644 arch/xtensa/oprofile/backtrace.c create mode 100644 arch/xtensa/oprofile/init.c (limited to 'arch/xtensa/oprofile') diff --git a/arch/xtensa/oprofile/Makefile b/arch/xtensa/oprofile/Makefile new file mode 100644 index 000000000..f559b9ffb --- /dev/null +++ b/arch/xtensa/oprofile/Makefile @@ -0,0 +1,10 @@ +# SPDX-License-Identifier: GPL-2.0 +obj-$(CONFIG_OPROFILE) += oprofile.o + +DRIVER_OBJS = $(addprefix ../../../drivers/oprofile/, \ + oprof.o cpu_buffer.o buffer_sync.o \ + event_buffer.o oprofile_files.o \ + oprofilefs.o oprofile_stats.o \ + timer_int.o ) + +oprofile-y := $(DRIVER_OBJS) init.o backtrace.o diff --git a/arch/xtensa/oprofile/backtrace.c b/arch/xtensa/oprofile/backtrace.c new file mode 100644 index 000000000..8f952034e --- /dev/null +++ b/arch/xtensa/oprofile/backtrace.c @@ -0,0 +1,27 @@ +/** + * @file backtrace.c + * + * @remark Copyright 2008 Tensilica Inc. + * Copyright (C) 2015 Cadence Design Systems Inc. + * @remark Read the file COPYING + * + */ + +#include +#include +#include + +static int xtensa_backtrace_cb(struct stackframe *frame, void *data) +{ + oprofile_add_trace(frame->pc); + return 0; +} + +void xtensa_backtrace(struct pt_regs * const regs, unsigned int depth) +{ + if (user_mode(regs)) + xtensa_backtrace_user(regs, depth, xtensa_backtrace_cb, NULL); + else + xtensa_backtrace_kernel(regs, depth, xtensa_backtrace_cb, + xtensa_backtrace_cb, NULL); +} diff --git a/arch/xtensa/oprofile/init.c b/arch/xtensa/oprofile/init.c new file mode 100644 index 000000000..a67eea379 --- /dev/null +++ b/arch/xtensa/oprofile/init.c @@ -0,0 +1,26 @@ +/** + * @file init.c + * + * @remark Copyright 2008 Tensilica Inc. + * @remark Read the file COPYING + * + */ + +#include +#include +#include +#include + + +extern void xtensa_backtrace(struct pt_regs *const regs, unsigned int depth); + +int __init oprofile_arch_init(struct oprofile_operations *ops) +{ + ops->backtrace = xtensa_backtrace; + return -ENODEV; +} + + +void oprofile_arch_exit(void) +{ +} -- cgit v1.2.3