Re: [PATCH 6/9] target/loongarch: Enable disassembly via capstone
Song Gao <[email protected]>
| Newsgroups | org.nongnu.qemu-riscv,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <[email protected]> |
在 2026/8/9 上午9:33, Richard Henderson 写道: > Signed-off-by: Richard Henderson <[email protected]> > --- > include/disas/capstone.h | 6 ++++++ > target/loongarch/cpu.c | 8 ++++++++ > 2 files changed, 14 insertions(+) Reviewed-by: Song Gao <[email protected]> Thanks. Song Gao > diff --git a/include/disas/capstone.h b/include/disas/capstone.h > index db1abe7f70..a922f7627f 100644 > --- a/include/disas/capstone.h > +++ b/include/disas/capstone.h > @@ -40,6 +40,12 @@ > > #endif /* CONFIG_CAPSTONE */ > > +#if CS_API_MAJOR < 6 > +#define CS_ARCH_LOONGARCH -1 > +#define CS_MODE_LOONGARCH32 0 > +#define CS_MODE_LOONGARCH64 0 > +#endif > + > #if CS_API_MAJOR < 5 > #define CS_ARCH_RISCV -1 > #define CS_MODE_RISCV32 0 > diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c > index fb03424ffa..7007622630 100644 > --- a/target/loongarch/cpu.c > +++ b/target/loongarch/cpu.c > @@ -29,6 +29,7 @@ > #include <linux/kvm.h> > #endif > #include "tcg/tcg_loongarch.h" > +#include "disas/capstone.h" > > const char * const regnames[32] = { > "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", > @@ -694,8 +695,15 @@ static void loongarch_cpu_reset_hold(Object *obj, ResetType type) > static void loongarch_cpu_disas_set_info(const CPUState *cs, > disassemble_info *info) > { > + CPULoongArchState *env = cpu_env((CPUState *)cs); > + > info->endian = BFD_ENDIAN_LITTLE; > info->print_insn = print_insn_loongarch; > + > + info->cap_arch = CS_ARCH_LOONGARCH; > + info->cap_insn_unit = 4; > + info->cap_insn_split = 4; > + info->cap_mode = is_la64(env) ? CS_MODE_LOONGARCH64 : CS_MODE_LOONGARCH32; > } > > static void loongarch_cpu_realizefn(DeviceState *dev, Error **errp)