Em Wed, Jun 26, 2019 at 02:56:55PM +0800, Guo Ren escreveu: > Thx Mao, > > Approved! I guess I can take this as a: Acked-by: Guo Ren <guoren@xxxxxxxxxx> Or would this better be: Reviewed-by: Guo Ren <guoren@xxxxxxxxxx> ? - Arnaldo > Best Regards > Guo Ren > > On Wed, Jun 26, 2019 at 2:53 PM Mao Han <han_mao@xxxxxxxxx> wrote: > > > > This patch add basic arch initialization and instruction associate support > > for csky. > > > > perf annotate --stdio2 > > Samples: 161 of event 'cpu-clock:pppH', 4000 Hz, Event count (approx.): > > 40250000, [percent: local period] > > test_4() /usr/lib/perf-test/callchain_test > > Percent > > > > Disassembly of section .text: > > > > 00008420 <test_4>: > > test_4(): > > subi sp, sp, 4 > > st.w r8, (sp, 0x0) > > mov r8, sp > > subi sp, sp, 8 > > subi r3, r8, 4 > > movi r2, 0 > > st.w r2, (r3, 0x0) > > ↓ br 2e > > 100.00 14: subi r3, r8, 4 > > ld.w r2, (r3, 0x0) > > subi r3, r8, 8 > > st.w r2, (r3, 0x0) > > subi r3, r8, 4 > > ld.w r3, (r3, 0x0) > > addi r2, r3, 1 > > subi r3, r8, 4 > > st.w r2, (r3, 0x0) > > 2e: subi r3, r8, 4 > > ld.w r2, (r3, 0x0) > > lrw r3, 0x98967f // 8598 <main+0x28> > > cmplt r3, r2 > > ↑ bf 14 > > mov r0, r0 > > mov r0, r0 > > mov sp, r8 > > ld.w r8, (sp, 0x0) > > addi sp, sp, 4 > > ← rts > > > > Signed-off-by: Mao Han <han_mao@xxxxxxxxx> > > Cc: Guo Ren <guoren@xxxxxxxxxx> > > Cc: Peter Zijlstra <peterz@xxxxxxxxxxxxx> > > Cc: Ingo Molnar <mingo@xxxxxxxxxx> > > Cc: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> > > Cc: Alexander Shishkin <alexander.shishkin@xxxxxxxxxxxxxxx> > > Cc: Jiri Olsa <jolsa@xxxxxxxxxx> > > Cc: Namhyung Kim <namhyung@xxxxxxxxxx> > > --- > > tools/perf/arch/csky/annotate/instructions.c | 48 ++++++++++++++++++++++++++++ > > tools/perf/util/annotate.c | 5 +++ > > 2 files changed, 53 insertions(+) > > create mode 100644 tools/perf/arch/csky/annotate/instructions.c > > > > diff --git a/tools/perf/arch/csky/annotate/instructions.c b/tools/perf/arch/csky/annotate/instructions.c > > new file mode 100644 > > index 0000000..5337bfb > > --- /dev/null > > +++ b/tools/perf/arch/csky/annotate/instructions.c > > @@ -0,0 +1,48 @@ > > +// SPDX-License-Identifier: GPL-2.0 > > +// Copyright (C) 2019 Hangzhou C-SKY Microsystems co.,ltd. > > + > > +#include <linux/compiler.h> > > + > > +static struct ins_ops *csky__associate_ins_ops(struct arch *arch, > > + const char *name) > > +{ > > + struct ins_ops *ops = NULL; > > + > > + /* catch all kind of jumps */ > > + if (!strcmp(name, "bt") || > > + !strcmp(name, "bf") || > > + !strcmp(name, "bez") || > > + !strcmp(name, "bnez") || > > + !strcmp(name, "bnezad") || > > + !strcmp(name, "bhsz") || > > + !strcmp(name, "bhz") || > > + !strcmp(name, "blsz") || > > + !strcmp(name, "blz") || > > + !strcmp(name, "br") || > > + !strcmp(name, "jmpi") || > > + !strcmp(name, "jmp")) > > + ops = &jump_ops; > > + > > + /* catch function call */ > > + if (!strcmp(name, "bsr") || > > + !strcmp(name, "jsri") || > > + !strcmp(name, "jsr")) > > + ops = &call_ops; > > + > > + /* catch function return */ > > + if (!strcmp(name, "rts")) > > + ops = &ret_ops; > > + > > + if (ops) > > + arch__associate_ins_ops(arch, name, ops); > > + return ops; > > +} > > + > > +static int csky__annotate_init(struct arch *arch, char *cpuid __maybe_unused) > > +{ > > + arch->initialized = true; > > + arch->objdump.comment_char = '/'; > > + arch->associate_instruction_ops = csky__associate_ins_ops; > > + > > + return 0; > > +} > > diff --git a/tools/perf/util/annotate.c b/tools/perf/util/annotate.c > > index 79db038..eb2456e 100644 > > --- a/tools/perf/util/annotate.c > > +++ b/tools/perf/util/annotate.c > > @@ -144,6 +144,7 @@ static int arch__associate_ins_ops(struct arch* arch, const char *name, struct i > > #include "arch/arc/annotate/instructions.c" > > #include "arch/arm/annotate/instructions.c" > > #include "arch/arm64/annotate/instructions.c" > > +#include "arch/csky/annotate/instructions.c" > > #include "arch/x86/annotate/instructions.c" > > #include "arch/powerpc/annotate/instructions.c" > > #include "arch/s390/annotate/instructions.c" > > @@ -163,6 +164,10 @@ static struct arch architectures[] = { > > .init = arm64__annotate_init, > > }, > > { > > + .name = "csky", > > + .init = csky__annotate_init, > > + }, > > + { > > .name = "x86", > > .init = x86__annotate_init, > > .instructions = x86__instructions, > > -- > > 2.7.4 > > > > > -- > Best Regards > Guo Ren > > ML: https://lore.kernel.org/linux-csky/ -- - Arnaldo