hexagon architecture system emulation: part 1/3
These patches are also staged in my tree (branch "hex-next"
at https://github.com/quic/qemu/). After these three patch series, we're
able to run the test suite for minivm [1]. minivm is a hypervisor,
an implementation of the Hexagon Virtual Machine Specification.
[1] https://github.com/quic/hexagonMVM
Brian Cain (38):
docs: Add hexagon sysemu docs
docs/system: Add hexagon CPU emulation
target/hexagon: Add System/Guest register definitions
target/hexagon: Make gen_exception_end_tb non-static
target/hexagon: Switch to tag_ignore(), generate via
get_{user,sys}_tags()
target/hexagon: Add privilege check, use tag_ignore()
target/hexagon: Add a placeholder fp exception
target/hexagon: Add guest, system reg number defs
target/hexagon: Add guest, system reg number state
target/hexagon: Add TCG values for sreg, greg
target/hexagon: Add guest/sys reg writes to DisasContext
target/hexagon: Add imported macro, attr defs for sysemu
target/hexagon: Define DCache states
target/hexagon: Add new macro definitions for sysemu
target/hexagon: Add handlers for guest/sysreg r/w
target/hexagon: Add placeholder greg/sreg r/w helpers
target/hexagon: Add vmstate representation
target/hexagon: Make A_PRIV, "J2_trap*" insts need_env()
target/hexagon: Define register fields for system regs
target/hexagon: Implement do_raise_exception()
target/hexagon: Add system reg insns
target/hexagon: Add sysemu TCG overrides
target/hexagon: Add implicit attributes to sysemu macros
target/hexagon: Add TCG overrides for int handler insts
target/hexagon: Add TCG overrides for thread ctl
target/hexagon: Add TCG overrides for rte, nmi
target/hexagon: Add sreg_{read,write} helpers
target/hexagon: Initialize htid, modectl regs
target/hexagon: Add locks, id, next_PC to state
target/hexagon: Add a TLB count property
target/hexagon: Add {TLB,k0}lock, cause code, wait_next_pc
target/hexagon: Add stubs for modify_ssr/get_exe_mode
target/hexagon: Add gdb support for sys regs
target/hexagon: Add initial MMU model
target/hexagon: Add IRQ events
target/hexagon: Add clear_wait_mode() definition
target/hexagon: Define f{S,G}ET_FIELD macros
target/hexagon: Add hex_interrupts support
MAINTAINERS | 2 +
docs/devel/hexagon-sys.rst | 106 +++++
docs/devel/index-internals.rst | 1 +
docs/system/hexagon/cdsp.rst | 10 +
docs/system/hexagon/emulation.rst | 16 +
docs/system/target-hexagon.rst | 101 +++++
docs/system/targets.rst | 1 +
target/hexagon/cpu-param.h | 4 +
target/hexagon/cpu.h | 75 +++-
target/hexagon/cpu_bits.h | 43 ++
target/hexagon/cpu_helper.h | 43 ++
target/hexagon/gen_tcg.h | 9 +
target/hexagon/gen_tcg_sys.h | 103 +++++
target/hexagon/helper.h | 23 +
target/hexagon/hex_interrupts.h | 15 +
target/hexagon/hex_mmu.h | 30 ++
target/hexagon/hex_regs.h | 115 +++++
target/hexagon/internal.h | 16 +
target/hexagon/macros.h | 40 +-
target/hexagon/max.h | 26 ++
target/hexagon/sys_macros.h | 238 ++++++++++
target/hexagon/translate.h | 45 ++
target/hexagon/attribs_def.h.inc | 414 ++++++++++++++++--
target/hexagon/reg_fields_def.h.inc | 96 ++++
target/hexagon/arch.c | 5 +
target/hexagon/cpu.c | 87 ++++
target/hexagon/cpu_helper.c | 91 ++++
target/hexagon/gdbstub.c | 45 ++
target/hexagon/genptr.c | 163 +++++++
target/hexagon/hex_interrupts.c | 324 ++++++++++++++
target/hexagon/hex_mmu.c | 528 ++++++++++++++++++++++
target/hexagon/machine.c | 63 +++
target/hexagon/op_helper.c | 248 +++++++++++
target/hexagon/translate.c | 18 +-
gdb-xml/hexagon-sys.xml | 116 +++++
target/hexagon/gen_analyze_funcs.py | 21 +-
target/hexagon/gen_helper_funcs.py | 23 +-
target/hexagon/gen_helper_protos.py | 23 +-
target/hexagon/gen_idef_parser_funcs.py | 2 +
target/hexagon/gen_op_attribs.py | 2 +-
target/hexagon/gen_opcodes_def.py | 5 +-
target/hexagon/gen_tcg_func_table.py | 14 +-
target/hexagon/gen_tcg_funcs.py | 32 +-
target/hexagon/hex_common.py | 189 +++++++-
target/hexagon/imported/encode_pp.def | 213 ++++++---
target/hexagon/imported/macros.def | 558 ++++++++++++++++++++++++
target/hexagon/imported/system.idef | 262 ++++++++++-
target/hexagon/meson.build | 17 +-
48 files changed, 4435 insertions(+), 186 deletions(-)
create mode 100644 docs/devel/hexagon-sys.rst
create mode 100644 docs/system/hexagon/cdsp.rst
create mode 100644 docs/system/hexagon/emulation.rst
create mode 100644 docs/system/target-hexagon.rst
create mode 100644 target/hexagon/cpu_helper.h
create mode 100644 target/hexagon/gen_tcg_sys.h
create mode 100644 target/hexagon/hex_interrupts.h
create mode 100644 target/hexagon/hex_mmu.h
create mode 100644 target/hexagon/max.h
create mode 100644 target/hexagon/sys_macros.h
create mode 100644 target/hexagon/cpu_helper.c
create mode 100644 target/hexagon/hex_interrupts.c
create mode 100644 target/hexagon/hex_mmu.c
create mode 100644 target/hexagon/machine.c
create mode 100644 gdb-xml/hexagon-sys.xml
mode change 100755 => 100644 target/hexagon/imported/macros.def
--
2.34.1