qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v5 00/11] Add la32 & va32 support for loongarch64-softmmu
@ 2023-08-09  8:26 Jiajie Chen
  2023-08-09  8:26 ` [PATCH v5 01/11] target/loongarch: Add function to check current arch Jiajie Chen
                   ` (10 more replies)
  0 siblings, 11 replies; 23+ messages in thread
From: Jiajie Chen @ 2023-08-09  8:26 UTC (permalink / raw)
  To: qemu-devel
  Cc: richard.henderson, yijun, shenjinyang, gaosong, i.qemu,
	Jiajie Chen

This patch series allow qemu-system-loongarch64 to emulate a LoongArch32
machine. A new CPU model (la132) is added for loongarch32, however due
to lack of public documentation, details will need to be added in the
future. Initial GDB support is added.

At the same time, VA32(32-bit virtual address) support is introduced for
LoongArch64.

LA32 support is tested using a small supervisor program at
https://github.com/jiegec/supervisor-la32. VA32 mode under LA64 is not
tested yet.

Changes since v4:

- Code refactor, thanks Richard Henderson for great advice
- Truncate higher 32 bits of PC in VA32 mode
- Revert la132 initfn refactor

Changes since v3:

- Support VA32 mode for LoongArch64
- Check the current arch from CPUCFG.ARCH
- Reject la64-only instructions in la32 mode

Changes since v2:

- Fix typo in previous commit
- Fix VPPN width in TLBEHI/TLBREHI

Changes since v1:

- No longer create a separate qemu-system-loongarch32 executable, but
  allow user to run loongarch32 emulation using qemu-system-loongarch64
- Add loongarch32 cpu support for virt machine

Full changes:

Jiajie Chen (11):
  target/loongarch: Add function to check current arch
  target/loongarch: Add new object class for loongarch32 cpus
  target/loongarch: Add GDB support for loongarch32 mode
  target/loongarch: Support LoongArch32 TLB entry
  target/loongarch: Support LoongArch32 DMW
  target/loongarch: Support LoongArch32 VPPN
  target/loongarch: Add LA64 & VA32 to DisasContext
  target/loongarch: Reject la64-only instructions in la32 mode
  target/loongarch: Truncate high 32 bits of address in VA32 mode
  target/loongarch: Sign extend results in VA32 mode
  target/loongarch: Add loongarch32 cpu la132

 configs/targets/loongarch64-softmmu.mak       |   2 +-
 gdb-xml/loongarch-base32.xml                  |  45 ++++++++
 hw/loongarch/virt.c                           |   5 -
 target/loongarch/cpu-csr.h                    |  22 ++--
 target/loongarch/cpu.c                        |  74 +++++++++++--
 target/loongarch/cpu.h                        |  33 ++++++
 target/loongarch/gdbstub.c                    |  34 ++++--
 target/loongarch/insn_trans/trans_arith.c.inc |  32 +++---
 .../loongarch/insn_trans/trans_atomic.c.inc   |  81 +++++++-------
 target/loongarch/insn_trans/trans_bit.c.inc   |  28 ++---
 .../loongarch/insn_trans/trans_branch.c.inc   |  11 +-
 target/loongarch/insn_trans/trans_extra.c.inc |  16 +--
 .../loongarch/insn_trans/trans_fmemory.c.inc  |  30 ++----
 target/loongarch/insn_trans/trans_fmov.c.inc  |   4 +-
 target/loongarch/insn_trans/trans_lsx.c.inc   |  38 ++-----
 .../loongarch/insn_trans/trans_memory.c.inc   | 102 ++++++++----------
 target/loongarch/insn_trans/trans_shift.c.inc |  14 +--
 target/loongarch/op_helper.c                  |   4 +-
 target/loongarch/tlb_helper.c                 |  66 +++++++++---
 target/loongarch/translate.c                  |  43 ++++++++
 target/loongarch/translate.h                  |   9 ++
 21 files changed, 445 insertions(+), 248 deletions(-)
 create mode 100644 gdb-xml/loongarch-base32.xml

-- 
2.41.0



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

end of thread, other threads:[~2023-08-14  9:00 UTC | newest]

Thread overview: 23+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-08-09  8:26 [PATCH v5 00/11] Add la32 & va32 support for loongarch64-softmmu Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 01/11] target/loongarch: Add function to check current arch Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 02/11] target/loongarch: Add new object class for loongarch32 cpus Jiajie Chen
2023-08-09 14:47   ` Richard Henderson
2023-08-09  8:26 ` [PATCH v5 03/11] target/loongarch: Add GDB support for loongarch32 mode Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 04/11] target/loongarch: Support LoongArch32 TLB entry Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 05/11] target/loongarch: Support LoongArch32 DMW Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 06/11] target/loongarch: Support LoongArch32 VPPN Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 07/11] target/loongarch: Add LA64 & VA32 to DisasContext Jiajie Chen
2023-08-09  8:26 ` [PATCH v5 08/11] target/loongarch: Reject la64-only instructions in la32 mode Jiajie Chen
2023-08-09 15:03   ` Richard Henderson
2023-08-10  2:38     ` gaosong
2023-08-10  2:58       ` Richard Henderson
2023-08-11  8:12   ` gaosong
2023-08-11 15:18     ` Richard Henderson
2023-08-14  8:59       ` gaosong
2023-08-09  8:26 ` [PATCH v5 09/11] target/loongarch: Truncate high 32 bits of address in VA32 mode Jiajie Chen
2023-08-09 15:10   ` Richard Henderson
2023-08-09  8:26 ` [PATCH v5 10/11] target/loongarch: Sign extend results " Jiajie Chen
2023-08-09 15:11   ` Richard Henderson
2023-08-09  8:26 ` [PATCH v5 11/11] target/loongarch: Add loongarch32 cpu la132 Jiajie Chen
2023-08-09 15:11   ` Richard Henderson
2023-08-10 12:47   ` gaosong

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).