Commit | Line | Data |
---|---|---|
c9b951c4 JO |
1 | #include <errno.h> |
2 | #include "perf_regs.h" | |
0c4e774f | 3 | #include "event.h" |
c9b951c4 | 4 | |
af4aeadd SE |
5 | const struct sample_reg __weak sample_reg_masks[] = { |
6 | SMPL_REG_END | |
7 | }; | |
8 | ||
9fb47654 | 9 | #ifdef HAVE_PERF_REGS_SUPPORT |
c9b951c4 JO |
10 | int perf_reg_value(u64 *valp, struct regs_dump *regs, int id) |
11 | { | |
12 | int i, idx = 0; | |
13 | u64 mask = regs->mask; | |
14 | ||
0c4e774f JO |
15 | if (regs->cache_mask & (1 << id)) |
16 | goto out; | |
17 | ||
c9b951c4 JO |
18 | if (!(mask & (1 << id))) |
19 | return -EINVAL; | |
20 | ||
21 | for (i = 0; i < id; i++) { | |
22 | if (mask & (1 << i)) | |
23 | idx++; | |
24 | } | |
25 | ||
0c4e774f JO |
26 | regs->cache_mask |= (1 << id); |
27 | regs->cache_regs[id] = regs->regs[idx]; | |
28 | ||
29 | out: | |
30 | *valp = regs->cache_regs[id]; | |
c9b951c4 JO |
31 | return 0; |
32 | } | |
9fb47654 | 33 | #endif |