MAINTAINERS | 31 + docs/system/riscv/milkv-duo.rst | 49 ++ docs/system/riscv/riscv-server-ref.rst | 65 ++ docs/system/riscv/tt_atlantis.rst | 1 + docs/system/target-riscv.rst | 2 + configs/devices/riscv64-softmmu/default.mak | 2 + disas/riscv-xsf.h | 16 + disas/riscv.h | 1 + include/exec/translation-block.h | 4 +- include/hw/char/dw8250.h | 28 + include/hw/misc/cv1800b_clk.h | 26 + include/hw/misc/tt_atlantis_prcm.h | 51 ++ include/hw/riscv/cv1800b.h | 56 ++ include/hw/riscv/tt_atlantis.h | 28 + linux-user/riscv/target_cpu.h | 2 - target/riscv/cpu-qom.h | 1 + target/riscv/cpu.h | 37 +- target/riscv/cpu_bits.h | 33 + target/riscv/cpu_cfg.h | 5 + target/riscv/helper.h | 16 +- target/riscv/kvm/kvm_riscv.h | 7 + target/riscv/cpu_cfg_fields.h.inc | 3 + target/riscv/insn32.decode | 1 + target/riscv/xsf.decode | 30 + disas/riscv-xsf.c | 49 ++ disas/riscv.c | 5 +- hw/char/dw8250.c | 130 ++++ hw/intc/riscv_aclint.c | 2 +- hw/misc/cv1800b_clk.c | 98 +++ hw/misc/tt_atlantis_prcm.c | 428 ++++++++++++ hw/riscv/cv1800b.c | 177 +++++ hw/riscv/milkv_duo.c | 118 ++++ hw/riscv/server_platform_ref.c | 776 +++++++++++++++++++++ hw/riscv/tt_atlantis.c | 125 +++- hw/riscv/virt-acpi-build.c | 2 +- target/riscv/cpu.c | 134 +++- target/riscv/kvm/kvm-cpu.c | 74 +- target/riscv/machine.c | 80 +++ target/riscv/tcg/cpu_helper.c | 148 +++- target/riscv/tcg/csr.c | 254 ++++++- target/riscv/tcg/debug.c | 59 +- target/riscv/tcg/op_helper.c | 107 ++- target/riscv/tcg/tcg-cpu.c | 36 + target/riscv/tcg/translate.c | 56 +- target/riscv/tcg/xsf_helper.c | 87 +++ target/riscv/time_helper.c | 12 +- tests/qtest/milkv-duo-test.c | 70 ++ disas/riscv-xsf-op.c.inc | 11 + target/riscv/tcg/insn_trans/trans_privileged.c.inc | 25 + target/riscv/tcg/insn_trans/trans_rva.c.inc | 24 - target/riscv/tcg/insn_trans/trans_rvi.c.inc | 11 - target/riscv/tcg/insn_trans/trans_rvzawrs.c.inc | 3 - target/riscv/tcg/insn_trans/trans_rvzfh.c.inc | 2 + target/riscv/tcg/insn_trans/trans_svinval.c.inc | 3 + target/riscv/tcg/insn_trans/trans_xsf.c.inc | 98 +++ target/riscv/tcg/insn_trans/trans_xthead.c.inc | 12 +- disas/meson.build | 3 +- hw/char/Kconfig | 4 + hw/char/meson.build | 1 + hw/misc/Kconfig | 3 + hw/misc/meson.build | 2 + hw/misc/trace-events | 4 + hw/riscv/Kconfig | 31 + hw/riscv/meson.build | 4 + meson_options.txt | 4 + scripts/meson-buildoptions.sh | 2 + target/riscv/meson.build | 1 + target/riscv/tcg/meson.build | 1 + tests/data/acpi/riscv64/virt/SPCR | Bin 90 -> 90 bytes tests/functional/riscv64/meson.build | 3 + tests/functional/riscv64/test_milkv_duo.py | 53 ++ tests/functional/riscv64/test_opensbi.py | 4 + tests/functional/riscv64/test_server_ref.py | 90 +++ tests/qtest/meson.build | 3 +- tests/tcg/meson.build | 1 + tests/tcg/riscv32/meson.build | 6 + tests/tcg/riscv32/semihost.ld | 23 + tests/tcg/riscv32/system/meson.build | 36 + tests/tcg/riscv32/test-mcycle.S | 45 ++ tests/tcg/riscv64/system/meson.build | 16 + tests/tcg/riscv64/test-minstret-wfi.S | 100 +++ tests/tcg/riscv64/test-sdext-sigill.S | 83 +++ tests/tcg/riscv64/test-xsfvqmacc.S | 260 +++++++ 83 files changed, 4263 insertions(+), 231 deletions(-) create mode 100644 docs/system/riscv/milkv-duo.rst create mode 100644 docs/system/riscv/riscv-server-ref.rst create mode 100644 disas/riscv-xsf.h create mode 100644 include/hw/char/dw8250.h create mode 100644 include/hw/misc/cv1800b_clk.h create mode 100644 include/hw/misc/tt_atlantis_prcm.h create mode 100644 include/hw/riscv/cv1800b.h create mode 100644 target/riscv/xsf.decode create mode 100644 disas/riscv-xsf.c create mode 100644 hw/char/dw8250.c create mode 100644 hw/misc/cv1800b_clk.c create mode 100644 hw/misc/tt_atlantis_prcm.c create mode 100644 hw/riscv/cv1800b.c create mode 100644 hw/riscv/milkv_duo.c create mode 100644 hw/riscv/server_platform_ref.c create mode 100644 target/riscv/tcg/xsf_helper.c create mode 100644 tests/qtest/milkv-duo-test.c create mode 100644 disas/riscv-xsf-op.c.inc create mode 100644 target/riscv/tcg/insn_trans/trans_xsf.c.inc create mode 100755 tests/functional/riscv64/test_milkv_duo.py create mode 100755 tests/functional/riscv64/test_server_ref.py create mode 100644 tests/tcg/riscv32/meson.build create mode 100644 tests/tcg/riscv32/semihost.ld create mode 100644 tests/tcg/riscv32/system/meson.build create mode 100644 tests/tcg/riscv32/test-mcycle.S create mode 100644 tests/tcg/riscv64/test-minstret-wfi.S create mode 100644 tests/tcg/riscv64/test-sdext-sigill.S create mode 100644 tests/tcg/riscv64/test-xsfvqmacc.S