perf-util-y += arm-spe.o
perf-util-y += header.o
perf-util-y += hisi-ptt.o
-perf-util-y += machine.o
perf-util-y += mem-events.o
perf-util-y += pmu.o
perf-util-y += tsc.o
+++ /dev/null
-// SPDX-License-Identifier: GPL-2.0
-
-#include "callchain.h" // prototype of arch__add_leaf_frame_record_opts
-#include "perf_regs.h"
-#include "record.h"
-
-#define SMPL_REG_MASK(b) (1ULL << (b))
-
-void arch__add_leaf_frame_record_opts(struct record_opts *opts)
-{
- opts->sample_user_regs |= SMPL_REG_MASK(PERF_REG_ARM64_LR);
-}
#include "util/parse-events.h"
#include "util/config.h"
+#include "util/arm64-frame-pointer-unwind-support.h"
#include "util/callchain.h"
#include "util/cgroup.h"
#include "util/header.h"
return 0;
}
-void __weak arch__add_leaf_frame_record_opts(struct record_opts *opts __maybe_unused)
-{
-}
-
static int parse_control_option(const struct option *opt,
const char *str,
int unset __maybe_unused)
evlist__warn_user_requested_cpus(rec->evlist, rec->opts.target.cpu_list);
- if (callchain_param.enabled && callchain_param.record_mode == CALLCHAIN_FP)
- arch__add_leaf_frame_record_opts(&rec->opts);
+ if (callchain_param.enabled && callchain_param.record_mode == CALLCHAIN_FP) {
+ if (EM_HOST == EM_AARCH64)
+ add_leaf_frame_caller_opts_aarch64(&rec->opts);
+ }
err = -ENOMEM;
if (evlist__create_maps(rec->evlist, &rec->opts.target) < 0) {
#include "arm64-frame-pointer-unwind-support.h"
#include "callchain.h"
#include "event.h"
+#include "record.h"
#include "unwind.h"
#include <string.h>
#define SMPL_REG_MASK(b) (1ULL << (b))
+void add_leaf_frame_caller_opts_aarch64(struct record_opts *opts)
+{
+ opts->sample_user_regs |= SMPL_REG_MASK(PERF_REG_ARM64_LR);
+}
+
static bool get_leaf_frame_caller_enabled(struct perf_sample *sample)
{
struct regs_dump *regs;
#include <linux/types.h>
struct perf_sample;
+struct record_opts;
struct thread;
+void add_leaf_frame_caller_opts_aarch64(struct record_opts *opts);
u64 get_leaf_frame_caller_aarch64(struct perf_sample *sample, struct thread *thread, int user_idx);
#endif /* __PERF_ARM_FRAME_POINTER_UNWIND_SUPPORT_H */
}
#endif
-void arch__add_leaf_frame_record_opts(struct record_opts *opts);
-
char *callchain_list__sym_name(struct callchain_list *cl,
char *bf, size_t bfsize, bool show_dso);
char *callchain_node__scnprintf_value(struct callchain_node *node,