diff options
author | Ingo Molnar <mingo@kernel.org> | 2017-04-12 07:29:13 +0200 |
---|---|---|
committer | Ingo Molnar <mingo@kernel.org> | 2017-04-12 09:22:19 +0200 |
commit | ef0eb2e6447f562bae2bcf503afcd85d68e843cc (patch) | |
tree | c6c89a26511e564efe85c1e69132aedd439c932d /tools/perf/arch/s390/annotate/instructions.c | |
parent | 1c4f8ad81c7f13314e4357550be9d5be3754fed9 (diff) | |
parent | 986a5bc028a84d487c354a529730b48682d1fb41 (diff) |
Merge tag 'perf-core-for-mingo-4.12-20170411' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
perf/core improvements and fixes:
User visible changes:
- Support s390 jump instructions in perf annotate (Christian Borntraeger)
- When failing to setup multiple events (e.g. '-e irq_vectors:*'), state
which one caused the failure (Yao Jin)
- Various fixes for pipe mode, where the output of 'perf record' is
written to stdout instead of to a perf.data file, fixing workloads
such as: (David Carrillo-Cisneros)
$ perf record -o - noploop | perf inject -b > perf.data
$ perf record -o - noploop | perf annotate
Infrastructure changes:
- Simplify ltrim() implementation (Arnaldo Carvalho de Melo)
- Use ltrim() and rtrim() in places where ad-hoc equivalents were being
used (Taeung Song)
Conflicts:
tools/perf/util/annotate.c
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/arch/s390/annotate/instructions.c')
-rw-r--r-- | tools/perf/arch/s390/annotate/instructions.c | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/tools/perf/arch/s390/annotate/instructions.c b/tools/perf/arch/s390/annotate/instructions.c new file mode 100644 index 000000000000..745b4b1b8b21 --- /dev/null +++ b/tools/perf/arch/s390/annotate/instructions.c @@ -0,0 +1,30 @@ +static struct ins_ops *s390__associate_ins_ops(struct arch *arch, const char *name) +{ + struct ins_ops *ops = NULL; + + /* catch all kind of jumps */ + if (strchr(name, 'j') || + !strncmp(name, "bct", 3) || + !strncmp(name, "br", 2)) + ops = &jump_ops; + /* override call/returns */ + if (!strcmp(name, "bras") || + !strcmp(name, "brasl") || + !strcmp(name, "basr")) + ops = &call_ops; + if (!strcmp(name, "br")) + ops = &ret_ops; + + arch__associate_ins_ops(arch, name, ops); + return ops; +} + +static int s390__annotate_init(struct arch *arch) +{ + if (!arch->initialized) { + arch->initialized = true; + arch->associate_instruction_ops = s390__associate_ins_ops; + } + + return 0; +} |