qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/33] single-binary: Make riscv cpu.h target independent
@ 2025-10-01  7:32 Anton Johansson via
  2025-10-01  7:32 ` [PATCH v2 01/33] target/riscv: Use 32 bits for misa extensions Anton Johansson via
                   ` (32 more replies)
  0 siblings, 33 replies; 99+ messages in thread
From: Anton Johansson via @ 2025-10-01  7:32 UTC (permalink / raw)
  To: qemu-devel
  Cc: pierrick.bouvier, philmd, richard.henderson, alistair.francis,
	palmer

Hi,

this is a first patchset moving towards single-binary support for riscv.
Additional patchsets for hw/ and target/ are based on this one so it's
best to make sure the approach taken is ok.  Most patches in this set
concern fields in CPUArchState which are either widened (usually to
uint64_t) or fixed to a smaller size which handles all use cases.

General purpose registers and fields mapped to TCG are dealt with by
widening the type and applying an offset to tcg_global_mem_new() to
correctly handle 32-bit targets on big endian hosts.

Quick question to correct my understanding. AFAICT riscv64-softmmu is a
superset of riscv32-softmmu which handles 32-, 64, and 128-bit ISAs, so
concerning single-binary do we for the time being only need to support
riscv64-softmmu?

Let me know what you think of the direction taken here and if you would
prefer something else.

Changes in v2:
  - Use BIT() to define misa extension bits in "Use 32 bits for misa
    extensions";

  - Squash "Fix size of mcause" into "Fix size of trivial CPUArchState
    fields";

  - Bump VMSTATE version_id and minimum_version_id for "cpu/pmp/entry",
    "cpu/pmp", "cpu/hyper", "cpu/vector", "cpu/rv128", "cpu/debug",
    "cpu/envcfg", "cpu/pmu", "cpu/jvt", "cpu/ssp", and "cpu".  Migration
    from older versions is broken.

Anton Johansson (33):
  target/riscv: Use 32 bits for misa extensions
  target/riscv: Fix size of trivial CPUArchState fields
  target/riscv: Fix size of mhartid
  target/riscv: Bugfix riscv_pmu_ctr_get_fixed_counters_val()
  target/riscv: Combine mhpmevent and mhpmeventh
  target/riscv: Combine mcyclecfg and mcyclecfgh
  target/riscv: Combine minstretcfg and minstretcfgh
  target/riscv: Combine mhpmcounter and mhpmcounterh
  target/riscv: Fix size of gpr and gprh
  target/riscv: Fix size of vector CSRs
  target/riscv: Fix size of pc, load_[val|res]
  target/riscv: Fix size of frm and fflags
  target/riscv: Fix size of badaddr and bins
  target/riscv: Fix size of guest_phys_fault_addr
  target/riscv: Fix size of priv_ver and vext_ver
  target/riscv: Fix size of retxh
  target/riscv: Fix size of ssp
  target/riscv: Fix size of excp_uw2
  target/riscv: Fix size of sw_check_code
  target/riscv: Fix size of priv
  target/riscv: Fix size of gei fields
  target/riscv: Fix size of [m|s|vs]iselect fields
  target/riscv: Fix arguments to board IMSIC emulation callbacks
  target/riscv: Fix size of irq_overflow_left
  target/riscv: Indent PMUFixedCtrState correctly
  target/riscv: Replace target_ulong in riscv_cpu_get_trap_name()
  target/riscv: Replace target_ulong in riscv_ctr_add_entry()
  target/riscv: Fix size of trigger data
  target/riscv: Fix size of mseccfg
  target/riscv: Move debug.h include away from cpu.h
  target/riscv: Move CSR declarations to separate csr.h header
  target/riscv: Introduce externally facing CSR access functions
  target/riscv: Make pmp.h target_ulong agnostic

 target/riscv/cpu.h                            | 341 +++++++-----------
 target/riscv/csr.h                            |  93 +++++
 target/riscv/debug.h                          |   2 -
 target/riscv/pmp.h                            |  20 +-
 hw/intc/riscv_imsic.c                         |  34 +-
 hw/riscv/riscv_hart.c                         |   7 +-
 linux-user/riscv/signal.c                     |   5 +-
 target/riscv/cpu.c                            |  11 +-
 target/riscv/cpu_helper.c                     |  37 +-
 target/riscv/csr.c                            | 284 ++++++++-------
 target/riscv/debug.c                          |   1 +
 target/riscv/fpu_helper.c                     |   6 +-
 target/riscv/gdbstub.c                        |   1 +
 target/riscv/kvm/kvm-cpu.c                    |   1 +
 target/riscv/machine.c                        | 177 +++++----
 target/riscv/op_helper.c                      |   1 +
 target/riscv/pmp.c                            |  13 +-
 target/riscv/pmu.c                            | 150 ++------
 target/riscv/tcg/tcg-cpu.c                    |   3 +-
 target/riscv/th_csr.c                         |   1 +
 target/riscv/translate.c                      |  53 ++-
 target/riscv/vector_helper.c                  |  22 +-
 .../riscv/insn_trans/trans_privileged.c.inc   |   2 +-
 target/riscv/insn_trans/trans_rvi.c.inc       |  16 +-
 target/riscv/insn_trans/trans_rvm.c.inc       |  16 +-
 target/riscv/insn_trans/trans_rvv.c.inc       |  22 +-
 target/riscv/insn_trans/trans_rvzicfiss.c.inc |  22 +-
 27 files changed, 666 insertions(+), 675 deletions(-)
 create mode 100644 target/riscv/csr.h

-- 
2.51.0



^ permalink raw reply	[flat|nested] 99+ messages in thread

end of thread, other threads:[~2025-10-23  1:55 UTC | newest]

Thread overview: 99+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-01  7:32 [PATCH v2 00/33] single-binary: Make riscv cpu.h target independent Anton Johansson via
2025-10-01  7:32 ` [PATCH v2 01/33] target/riscv: Use 32 bits for misa extensions Anton Johansson via
2025-10-01  7:34   ` Philippe Mathieu-Daudé
2025-10-02  1:56   ` Alistair Francis
2025-10-02 18:31   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 02/33] target/riscv: Fix size of trivial CPUArchState fields Anton Johansson via
2025-10-02  1:57   ` Alistair Francis
2025-10-02 18:31   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 03/33] target/riscv: Fix size of mhartid Anton Johansson via
2025-10-01  7:38   ` Philippe Mathieu-Daudé
2025-10-01  8:28     ` Anton Johansson via
2025-10-02 18:34       ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 04/33] target/riscv: Bugfix riscv_pmu_ctr_get_fixed_counters_val() Anton Johansson via
2025-10-02 18:50   ` Pierrick Bouvier
2025-10-02 23:34   ` Alistair Francis
2025-10-07 11:08     ` Anton Johansson via
2025-10-15  2:55       ` Alistair Francis
2025-10-15  9:58         ` Anton Johansson via
2025-10-16  4:01           ` Alistair Francis
2025-10-17 14:24             ` Anton Johansson via
2025-10-23  1:54               ` Alistair Francis
2025-10-01  7:32 ` [PATCH v2 05/33] target/riscv: Combine mhpmevent and mhpmeventh Anton Johansson via
2025-10-01  7:39   ` Philippe Mathieu-Daudé
2025-10-02 19:09     ` Pierrick Bouvier
2025-10-02 23:52       ` Alistair Francis
2025-10-02 19:08   ` Pierrick Bouvier
2025-10-02 19:33     ` Pierrick Bouvier
2025-10-02 23:55       ` Alistair Francis
2025-10-07 11:29         ` Anton Johansson via
2025-10-14 11:25         ` Anton Johansson via
2025-10-01  7:32 ` [PATCH v2 06/33] target/riscv: Combine mcyclecfg and mcyclecfgh Anton Johansson via
2025-10-02 19:13   ` Pierrick Bouvier
2025-10-03  0:05   ` Alistair Francis
2025-10-01  7:32 ` [PATCH v2 07/33] target/riscv: Combine minstretcfg and minstretcfgh Anton Johansson via
2025-10-02 19:14   ` Pierrick Bouvier
2025-10-03  0:06   ` Alistair Francis
2025-10-01  7:32 ` [PATCH v2 08/33] target/riscv: Combine mhpmcounter and mhpmcounterh Anton Johansson via
2025-10-02 19:24   ` Pierrick Bouvier
2025-10-02 19:25   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 09/33] target/riscv: Fix size of gpr and gprh Anton Johansson via
2025-10-01  7:42   ` Philippe Mathieu-Daudé
2025-10-03  9:00     ` Anton Johansson via
2025-10-01  7:32 ` [PATCH v2 10/33] target/riscv: Fix size of vector CSRs Anton Johansson via
2025-10-02 19:42   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 11/33] target/riscv: Fix size of pc, load_[val|res] Anton Johansson via
2025-10-02 19:54   ` Pierrick Bouvier
2025-10-03 12:43     ` Anton Johansson via
2025-10-01  7:32 ` [PATCH v2 12/33] target/riscv: Fix size of frm and fflags Anton Johansson via
2025-10-02 19:57   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 13/33] target/riscv: Fix size of badaddr and bins Anton Johansson via
2025-10-02 20:02   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 14/33] target/riscv: Fix size of guest_phys_fault_addr Anton Johansson via
2025-10-02 20:03   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 15/33] target/riscv: Fix size of priv_ver and vext_ver Anton Johansson via
2025-10-02 20:03   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 16/33] target/riscv: Fix size of retxh Anton Johansson via
2025-10-02 20:05   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 17/33] target/riscv: Fix size of ssp Anton Johansson via
2025-10-02 20:06   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 18/33] target/riscv: Fix size of excp_uw2 Anton Johansson via
2025-10-02 20:06   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 19/33] target/riscv: Fix size of sw_check_code Anton Johansson via
2025-10-02 20:07   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 20/33] target/riscv: Fix size of priv Anton Johansson via
2025-10-02 20:07   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 21/33] target/riscv: Fix size of gei fields Anton Johansson via
2025-10-02 20:08   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 22/33] target/riscv: Fix size of [m|s|vs]iselect fields Anton Johansson via
2025-10-02 20:09   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 23/33] target/riscv: Fix arguments to board IMSIC emulation callbacks Anton Johansson via
2025-10-02 20:15   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 24/33] target/riscv: Fix size of irq_overflow_left Anton Johansson via
2025-10-02 20:15   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 25/33] target/riscv: Indent PMUFixedCtrState correctly Anton Johansson via
2025-10-01  7:43   ` Philippe Mathieu-Daudé
2025-10-02 20:15   ` Pierrick Bouvier
2025-10-01  7:32 ` [PATCH v2 26/33] target/riscv: Replace target_ulong in riscv_cpu_get_trap_name() Anton Johansson via
2025-10-01  7:43   ` Philippe Mathieu-Daudé
2025-10-02 20:15   ` Pierrick Bouvier
2025-10-01  7:33 ` [PATCH v2 27/33] target/riscv: Replace target_ulong in riscv_ctr_add_entry() Anton Johansson via
2025-10-01  7:44   ` Philippe Mathieu-Daudé
2025-10-02 20:19   ` Pierrick Bouvier
2025-10-01  7:33 ` [PATCH v2 28/33] target/riscv: Fix size of trigger data Anton Johansson via
2025-10-01  7:46   ` Philippe Mathieu-Daudé
2025-10-02 20:19   ` Pierrick Bouvier
2025-10-01  7:33 ` [PATCH v2 29/33] target/riscv: Fix size of mseccfg Anton Johansson via
2025-10-01  7:46   ` Philippe Mathieu-Daudé
2025-10-02 20:20   ` Pierrick Bouvier
2025-10-01  7:33 ` [PATCH v2 30/33] target/riscv: Move debug.h include away from cpu.h Anton Johansson via
2025-10-02 20:21   ` Pierrick Bouvier
2025-10-03 12:52     ` Anton Johansson via
2025-10-01  7:33 ` [PATCH v2 31/33] target/riscv: Move CSR declarations to separate csr.h header Anton Johansson via
2025-10-02 20:22   ` Pierrick Bouvier
2025-10-01  7:33 ` [PATCH v2 32/33] target/riscv: Introduce externally facing CSR access functions Anton Johansson via
2025-10-02 20:24   ` Pierrick Bouvier
2025-10-01  7:33 ` [PATCH v2 33/33] target/riscv: Make pmp.h target_ulong agnostic Anton Johansson via
2025-10-01  7:49   ` Philippe Mathieu-Daudé
2025-10-03 12:57     ` Anton Johansson via
2025-10-02 20:23   ` Pierrick Bouvier

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).