forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
676 B
27 lines
676 B
// SPDX-License-Identifier: GPL-2.0 |
|
#include "archinsn.h" |
|
#include "event.h" |
|
#include "machine.h" |
|
#include "thread.h" |
|
#include "symbol.h" |
|
#include "../../../../arch/x86/include/asm/insn.h" |
|
|
|
void arch_fetch_insn(struct perf_sample *sample, |
|
struct thread *thread, |
|
struct machine *machine) |
|
{ |
|
struct insn insn; |
|
int len, ret; |
|
bool is64bit = false; |
|
|
|
if (!sample->ip) |
|
return; |
|
len = thread__memcpy(thread, machine, sample->insn, sample->ip, sizeof(sample->insn), &is64bit); |
|
if (len <= 0) |
|
return; |
|
|
|
ret = insn_decode(&insn, sample->insn, len, |
|
is64bit ? INSN_MODE_64 : INSN_MODE_32); |
|
if (ret >= 0 && insn.length <= len) |
|
sample->insn_len = insn.length; |
|
}
|
|
|