// 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; }