perf powerpc: Add support for PERF_SAMPLE_WEIGHT_STRUCT
[linux-2.6-microblaze.git] / tools / perf / arch / powerpc / util / event.c
1 // SPDX-License-Identifier: GPL-2.0
2 #include <linux/types.h>
3 #include <linux/string.h>
4 #include <linux/zalloc.h>
5
6 #include "../../../util/event.h"
7 #include "../../../util/synthetic-events.h"
8 #include "../../../util/machine.h"
9 #include "../../../util/tool.h"
10 #include "../../../util/map.h"
11 #include "../../../util/debug.h"
12
13 void arch_perf_parse_sample_weight(struct perf_sample *data,
14                                    const __u64 *array, u64 type)
15 {
16         union perf_sample_weight weight;
17
18         weight.full = *array;
19         if (type & PERF_SAMPLE_WEIGHT)
20                 data->weight = weight.full;
21         else
22                 data->weight = weight.var1_dw;
23 }
24
25 void arch_perf_synthesize_sample_weight(const struct perf_sample *data,
26                                         __u64 *array, u64 type)
27 {
28         *array = data->weight;
29
30         if (type & PERF_SAMPLE_WEIGHT_STRUCT)
31                 *array &= 0xffffffff;
32 }