123456789101112131415161718192021222324252627 |
- #include <errno.h>
- #include "perf_regs.h"
- #include "event.h"
- int perf_reg_value(u64 *valp, struct regs_dump *regs, int id)
- {
- int i, idx = 0;
- u64 mask = regs->mask;
- if (regs->cache_mask & (1 << id))
- goto out;
- if (!(mask & (1 << id)))
- return -EINVAL;
- for (i = 0; i < id; i++) {
- if (mask & (1 << i))
- idx++;
- }
- regs->cache_mask |= (1 << id);
- regs->cache_regs[id] = regs->regs[idx];
- out:
- *valp = regs->cache_regs[id];
- return 0;
- }
|