perf annotate: Add per arch instructions annotate handlers
Subsystems (2)
tip-bot for Arnaldo Carvalho de Melo
merge botCommit-ID: 763d8960a17126e73e7d9cd6b66e390196f48894 Gitweb: http://git.kernel.org/tip/763d8960a17126e73e7d9cd6b66e390196f48894 Author: Arnaldo Carvalho de Melo <[email protected]> AuthorDate: Thu, 17 Nov 2016 12:31:51 -0300 Committer: Arnaldo Carvalho de Melo <[email protected]> CommitDate: Thu, 17 Nov 2016 17:31:59 -0300
perf annotate: Add per arch instructions annotate handlers
Another step in supporting cross annotation.
The arch specific tables are put in:
tools/perf/arch/$ARCH/annotation/instructions.c
which, so far, just plug instructions to a bunch of parsers/formatters, but may have more as the need arises.
This is an alternative implementation to a previous attempt made by Ravi Bangoria.
Cc Adrian Hunter <[email protected]>
Cc Alexander Shishkin <[email protected]>
Cc Chris Riyder <[email protected]>
Cc David Ahern <[email protected]>
Cc Jiri Olsa <[email protected]>
Cc Kim Phillips <[email protected]>
Cc Markus Trippelsdorf <[email protected]>
Cc Masami Hiramatsu <[email protected]>
Cc Namhyung Kim <[email protected]>
Cc Naveen N. Rao <[email protected]>
Cc Pawel Moll <[email protected]>
Cc Peter Zijlstra <[email protected]>
Cc Ravi Bangoria <[email protected]>
Cc Russell King <[email protected]>
Cc Taeung Song <[email protected]>
Cc Wang Nan <[email protected]>
Signed-off-by Arnaldo Carvalho de Melo <[email protected]>
--- tools/perf/arch/arm/annotate/instructions.c | 90 ++++++++++++++++++ tools/perf/arch/x86/annotate/instructions.c | 78 ++++++++++++++++ tools/perf/util/annotate.c | 136 ++++++---------------------- 3 files changed, 198 insertions(+), 106 deletions(-)
tools/perf/arch/arm/annotate/instructions.c new file +90 -0
@@ -0,0 +1,90 @@ +static struct ins arm__instructions[] = { + { .name ="add" , .ops = &mov_ops, }, + { .name ="addl" , .ops = &mov_ops, }, + { .name ="addq" , .ops = &mov_ops, }, + { .name ="addw" , .ops = &mov_ops, }, + { .name ="and" , .ops = &mov_ops, }, + { .name ="b" , .ops = &jump_ops, },// might also be a call + { .name ="bcc" , .ops = &jump_ops, }, + { .name ="bcs" , .ops = &jump_ops, }, + { .name ="beq" , .ops = &jump_ops, }, + { .name ="bge" , .ops = &jump_ops, }, + { .name ="bgt" , .ops = &jump_ops, }, + { .name ="bhi" , .ops = &jump_ops, }, + { .name ="bl" , .ops = &call_ops, }, + { .name ="bls" , .ops = &jump_ops, }, + { .name ="blt" , .ops = &jump_ops, }, + { .name ="blx" , .ops = &call_ops, }, + { .name ="bne" , .ops = &jump_ops, }, + { .name ="bts" , .ops = &mov_ops, }, + { .name ="call" , .ops = &call_ops, }, + { .name ="callq" , .ops = &call_ops, }, + { .name ="cmp" , .ops = &mov_ops, }, + { .name ="cmpb" , .ops = &mov_ops, }, + { .name ="cmpl" , .ops = &mov_ops, }, + { .name ="cmpq" , .ops = &mov_ops, }, + { .name ="cmpw" , .ops = &mov_ops, }, + { .name ="cmpxch" , .ops = &mov_ops, }, + { .name ="dec" , .ops = &dec_ops, }, + { .name ="decl" , .ops = &dec_ops, }, + { .name ="imul" , .ops = &mov_ops, }, + { .name ="inc" , .ops = &dec_ops, }, + { .name ="incl" , .ops = &dec_ops, }, + { .name ="ja" , .ops = &jump_ops, }, + { .name ="jae" , .ops = &jump_ops, }, + { .name ="jb" , .ops = &jump_ops, }, + { .name ="jbe" , .ops = &jump_ops, }, + { .name ="jc" , .ops = &jump_ops, }, + { .name ="jcxz" , .ops = &jump_ops, }, + { .name ="je" , .ops = &jump_ops, }, + { .name ="jecxz" , .ops = &jump_ops, }, + { .name ="jg" , .ops = &jump_ops, }, + { .name ="jge" , .ops = &jump_ops, }, + { .name ="jl" , .ops = &jump_ops, }, + { .name ="jle" , .ops = &jump_ops, }, + { .name ="jmp" , .ops = &jump_ops, }, + { .name ="jmpq" , .ops = &jump_ops, }, + { .name ="jna" , .ops = &jump_ops, }, + { .name ="jnae" , .ops = &jump_ops, }, + { .name ="jnb" , .ops = &jump_ops, }, + { .name ="jnbe" , .ops = &jump_ops, }, + { .name ="jnc" , .ops = &jump_ops, }, + { .name ="jne" , .ops = &jump_ops, }, + { .name ="jng" , .ops = &jump_ops, }, + { .name ="jnge" , .ops = &jump_ops, }, + { .name ="jnl" , .ops = &jump_ops, }, + { .name ="jnle" , .ops = &jump_ops, }, + { .name ="jno" , .ops = &jump_ops, }, + { .name ="jnp" , .ops = &jump_ops, }, + { .name ="jns" , .ops = &jump_ops, }, + { .name ="jnz" , .ops = &jump_ops, }, + { .name ="jo" , .ops = &jump_ops, }, + { .name ="jp" , .ops = &jump_ops, }, + { .name ="jpe" , .ops = &jump_ops, }, + { .name ="jpo" , .ops = &jump_ops, }, + { .name ="jrcxz" , .ops = &jump_ops, }, + { .name ="js" , .ops = &jump_ops, }, + { .name ="jz" , .ops = &jump_ops, }, + { .name ="lea" , .ops = &mov_ops, }, + { .name ="lock" , .ops = &lock_ops, }, + { .name ="mov" , .ops = &mov_ops, }, + { .name ="movb" , .ops = &mov_ops, }, + { .name ="movdqa" , .ops = &mov_ops, }, + { .name ="movl" , .ops = &mov_ops, }, + { .name ="movq" , .ops = &mov_ops, }, + { .name ="movslq" , .ops = &mov_ops, }, + { .name ="movzbl" , .ops = &mov_ops, }, + { .name ="movzwl" , .ops = &mov_ops, }, + { .name ="nop" , .ops = &nop_ops, }, + { .name ="nopl" , .ops = &nop_ops, }, + { .name ="nopw" , .ops = &nop_ops, }, + { .name ="or" , .ops = &mov_ops, }, + { .name ="orl" , .ops = &mov_ops, }, + { .name ="test" , .ops = &mov_ops, }, + { .name ="testb" , .ops = &mov_ops, }, + { .name ="testl" , .ops = &mov_ops, }, + { .name ="xadd" , .ops = &mov_ops, }, + { .name ="xbeginl" , .ops = &jump_ops, }, + { .name ="xbeginq" , .ops = &jump_ops, }, + { .name ="retq" , .ops = &ret_ops, }, +};
tools/perf/arch/x86/annotate/instructions.c new file +78 -0
78 lines not on this page · raw message
tools/perf/util/annotate.c +30 -106
193 lines not on this page · raw message