This patch implements Loongson VirtualiZation (LVZ) extension support for LoongArch's TCG target. With this patch, it is now possible to start a nested KVM-accelerated virtual machine on a TCG-emulated virtual machine.
SignKirigami (14): target/loongarch: Define LVZ CSR fields target/loongarch: Add LVZ CPU state definitions target/loongarch: Add LVZ CSR metadata target/loongarch: Add LVZ CPU model support target/loongarch: Add LVZ guest interrupt state target/loongarch: Add LVZ guest timer support target/loongarch: Add LVZ VM entry and exception handling target/loongarch: Add LVZ guest CSR helpers target/loongarch: Add LVZ migration state target/loongarch: Add LVZ MMU and PTW support target/loongarch: Translate LVZ guest CSR instructions target/loongarch: Translate LVZ guest TLB instructions target/loongarch: Translate LVZ guest traps and HVC fix(tcg/loongarch): strip flag bits in lddir/ldpte address calculation target/loongarch/arch_dump.c | 6 +- target/loongarch/cpu-csr.h | 38 ++ target/loongarch/cpu-mmu.h | 38 +- target/loongarch/cpu.c | 247 ++++++--- target/loongarch/cpu.h | 64 ++- target/loongarch/cpu_helper.c | 84 +-- target/loongarch/csr.c | 112 ++-- target/loongarch/csr.h | 6 +- target/loongarch/disas.c | 15 + target/loongarch/insns.decode | 14 + target/loongarch/internals.h | 10 +- target/loongarch/machine.c | 111 +++- target/loongarch/tcg/constant_timer.c | 67 ++- target/loongarch/tcg/csr_helper.c | 224 +++++++- target/loongarch/tcg/helper.h | 36 +- .../tcg/insn_trans/trans_extra.c.inc | 2 +- .../tcg/insn_trans/trans_privileged.c.inc | 388 +++++++++++--- target/loongarch/tcg/op_helper.c | 22 + target/loongarch/tcg/tcg_cpu.c | 82 ++- target/loongarch/tcg/tcg_loongarch.h | 3 +- target/loongarch/tcg/tlb_helper.c | 498 ++++++++++++------ target/loongarch/tcg/translate.c | 6 +- target/loongarch/translate.h | 2 + 23 files changed, 1588 insertions(+), 487 deletions(-) -- 2.55.0
