diff options
author | Adrian Hunter <adrian.hunter@intel.com> | 2013-08-27 04:23:10 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2013-08-29 15:10:58 -0400 |
commit | 5b95a4a3b52a1de84022dfaf580df4b5251f4a15 (patch) | |
tree | 44aac01a7b1efa2fbd4597c1b76286751bc40fca /tools | |
parent | 75562573bab35b129cfd342fc2bcf89da84a6644 (diff) |
perf tools: Add missing 'abi' member to 'struct regs_dump'
And store the parsed value there. Note that the 'abi' is 0 (no
registers), 1 (32-bit registers) or 2 (64-bit registers), but the
registers are anyway copied one-by-one as 64-bit values onto the event
i.e. see 'perf_output_sample_regs()'
Acked-by: Jiri Olsa <jolsa@redhat.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@redhat.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Namhyung Kim <namhyung@gmail.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Stephane Eranian <eranian@google.com>
Link: http://lkml.kernel.org/r/1377591794-30553-9-git-send-email-adrian.hunter@intel.com
Signed-off-by: Adrian Hunter <adrian.hunter@intel.com>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/util/event.h | 1 | ||||
-rw-r--r-- | tools/perf/util/evsel.c | 7 |
2 files changed, 4 insertions, 4 deletions
diff --git a/tools/perf/util/event.h b/tools/perf/util/event.h index 491333910cf1..f959801ac9e4 100644 --- a/tools/perf/util/event.h +++ b/tools/perf/util/event.h | |||
@@ -62,6 +62,7 @@ struct sample_event { | |||
62 | }; | 62 | }; |
63 | 63 | ||
64 | struct regs_dump { | 64 | struct regs_dump { |
65 | u64 abi; | ||
65 | u64 *regs; | 66 | u64 *regs; |
66 | }; | 67 | }; |
67 | 68 | ||
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c index db4e431cb6ca..11841881cef9 100644 --- a/tools/perf/util/evsel.c +++ b/tools/perf/util/evsel.c | |||
@@ -1416,13 +1416,12 @@ int perf_evsel__parse_sample(struct perf_evsel *evsel, union perf_event *event, | |||
1416 | } | 1416 | } |
1417 | 1417 | ||
1418 | if (type & PERF_SAMPLE_REGS_USER) { | 1418 | if (type & PERF_SAMPLE_REGS_USER) { |
1419 | u64 avail; | ||
1420 | |||
1421 | /* First u64 tells us if we have any regs in sample. */ | 1419 | /* First u64 tells us if we have any regs in sample. */ |
1422 | OVERFLOW_CHECK_u64(array); | 1420 | OVERFLOW_CHECK_u64(array); |
1423 | avail = *array++; | 1421 | data->user_regs.abi = *array; |
1422 | array++; | ||
1424 | 1423 | ||
1425 | if (avail) { | 1424 | if (data->user_regs.abi) { |
1426 | u64 regs_user = evsel->attr.sample_regs_user; | 1425 | u64 regs_user = evsel->attr.sample_regs_user; |
1427 | 1426 | ||
1428 | sz = hweight_long(regs_user) * sizeof(u64); | 1427 | sz = hweight_long(regs_user) * sizeof(u64); |