提交 f4782207 编写于 作者: N Naveen N. Rao 提交者: Michael Ellerman

perf tools: Fix perf regs mask generation

On some architectures (powerpc in particular), the number of registers
exceeds what can be represented in an integer bitmask. Ensure we
generate the proper bitmask on such platforms.

Fixes: 71ad0f5e ("perf tools: Support for DWARF CFI unwinding on post processing")
Signed-off-by: NNaveen N. Rao <naveen.n.rao@linux.vnet.ibm.com>
Acked-by: NArnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: NMichael Ellerman <mpe@ellerman.id.au>
上级 c4522469
......@@ -12,18 +12,18 @@ 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))
if (regs->cache_mask & (1ULL << id))
goto out;
if (!(mask & (1 << id)))
if (!(mask & (1ULL << id)))
return -EINVAL;
for (i = 0; i < id; i++) {
if (mask & (1 << i))
if (mask & (1ULL << i))
idx++;
}
regs->cache_mask |= (1 << id);
regs->cache_mask |= (1ULL << id);
regs->cache_regs[id] = regs->regs[idx];
out:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册