[PATCH v3 00/19] Add LoongArch linux-user emulation support

Song Gao posted 19 patches 11 months, 2 weeks ago
Test checkpatch passed
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/1630048494-2143-1-git-send-email-gaosong@loongson.cn
Maintainers: Song Gao <gaosong@loongson.cn>, Laurent Vivier <laurent@vivier.eu>
MAINTAINERS                                 |    6 +
configs/targets/loongarch64-linux-user.mak  |    3 +
disas/loongarch.c                           | 2511 +++++++++++++++++++++++++++
disas/meson.build                           |    1 +
include/disas/dis-asm.h                     |    2 +
include/elf.h                               |    2 +
linux-user/elfload.c                        |   58 +
linux-user/loongarch64/cpu_loop.c           |  108 ++
linux-user/loongarch64/signal.c             |  178 ++
linux-user/loongarch64/sockbits.h           |    1 +
linux-user/loongarch64/syscall_nr.h         |  307 ++++
linux-user/loongarch64/target_cpu.h         |   36 +
linux-user/loongarch64/target_elf.h         |   14 +
linux-user/loongarch64/target_errno_defs.h  |    7 +
linux-user/loongarch64/target_fcntl.h       |   12 +
linux-user/loongarch64/target_signal.h      |   28 +
linux-user/loongarch64/target_structs.h     |   49 +
linux-user/loongarch64/target_syscall.h     |   46 +
linux-user/loongarch64/termbits.h           |  229 +++
linux-user/syscall_defs.h                   |   10 +-
meson.build                                 |    1 +
target/loongarch/README                     |    5 +
target/loongarch/cpu-param.h                |   19 +
target/loongarch/cpu.c                      |  286 +++
target/loongarch/cpu.h                      |  145 ++
target/loongarch/fpu_helper.c               |  947 ++++++++++
target/loongarch/helper.h                   |  102 ++
target/loongarch/insn_trans/trans_arith.c   |  334 ++++
target/loongarch/insn_trans/trans_atomic.c  |  132 ++
target/loongarch/insn_trans/trans_bit.c     |  297 ++++
target/loongarch/insn_trans/trans_branch.c  |   84 +
target/loongarch/insn_trans/trans_extra.c   |   88 +
target/loongarch/insn_trans/trans_farith.c  |   79 +
target/loongarch/insn_trans/trans_fcmp.c    |  279 +++
target/loongarch/insn_trans/trans_fcnv.c    |   36 +
target/loongarch/insn_trans/trans_fmemory.c |  143 ++
target/loongarch/insn_trans/trans_fmov.c    |  159 ++
target/loongarch/insn_trans/trans_memory.c  |  263 +++
target/loongarch/insn_trans/trans_shift.c   |  154 ++
target/loongarch/insns.decode               |  480 +++++
target/loongarch/internals.h                |   24 +
target/loongarch/meson.build                |   18 +
target/loongarch/op_helper.c                |   85 +
target/loongarch/translate.c                |  309 ++++
target/loongarch/translate.h                |   54 +
target/meson.build                          |    1 +
46 files changed, 8128 insertions(+), 4 deletions(-)
create mode 100644 configs/targets/loongarch64-linux-user.mak
create mode 100644 disas/loongarch.c
create mode 100644 linux-user/loongarch64/cpu_loop.c
create mode 100644 linux-user/loongarch64/signal.c
create mode 100644 linux-user/loongarch64/sockbits.h
create mode 100644 linux-user/loongarch64/syscall_nr.h
create mode 100644 linux-user/loongarch64/target_cpu.h
create mode 100644 linux-user/loongarch64/target_elf.h
create mode 100644 linux-user/loongarch64/target_errno_defs.h
create mode 100644 linux-user/loongarch64/target_fcntl.h
create mode 100644 linux-user/loongarch64/target_signal.h
create mode 100644 linux-user/loongarch64/target_structs.h
create mode 100644 linux-user/loongarch64/target_syscall.h
create mode 100644 linux-user/loongarch64/termbits.h
create mode 100644 target/loongarch/README
create mode 100644 target/loongarch/cpu-param.h
create mode 100644 target/loongarch/cpu.c
create mode 100644 target/loongarch/cpu.h
create mode 100644 target/loongarch/fpu_helper.c
create mode 100644 target/loongarch/helper.h
create mode 100644 target/loongarch/insn_trans/trans_arith.c
create mode 100644 target/loongarch/insn_trans/trans_atomic.c
create mode 100644 target/loongarch/insn_trans/trans_bit.c
create mode 100644 target/loongarch/insn_trans/trans_branch.c
create mode 100644 target/loongarch/insn_trans/trans_extra.c
create mode 100644 target/loongarch/insn_trans/trans_farith.c
create mode 100644 target/loongarch/insn_trans/trans_fcmp.c
create mode 100644 target/loongarch/insn_trans/trans_fcnv.c
create mode 100644 target/loongarch/insn_trans/trans_fmemory.c
create mode 100644 target/loongarch/insn_trans/trans_fmov.c
create mode 100644 target/loongarch/insn_trans/trans_memory.c
create mode 100644 target/loongarch/insn_trans/trans_shift.c
create mode 100644 target/loongarch/insns.decode
create mode 100644 target/loongarch/internals.h
create mode 100644 target/loongarch/meson.build
create mode 100644 target/loongarch/op_helper.c
create mode 100644 target/loongarch/translate.c
create mode 100644 target/loongarch/translate.h
[PATCH v3 00/19] Add LoongArch linux-user emulation support
Posted by Song Gao 11 months, 2 weeks ago
Hi,

This series only adds linux-user emulation support for LoongArch.
So there is no introduction of system in docs/system directory,
We'll add that in a future series.


Changes for v3:
  * split trans.inc.c.
  * remove csr registers.
  * delete patchs 2, 4, 5.
  * follow Richard's code review comments [1].
  * follow Richard's riscv patches [2].

    [1]: https://patchew.org/QEMU/1626861198-6133-1-git-send-email-gaosong@loongson.cn/
    [2]: https://patchew.org/QEMU/20210823195529.560295-1-richard.henderson@linaro.org/ 


Changes for v2:
  * Patch 1, remove unnecessary introduction;
  * Patch 3, follow the ARM/AVR pattern to add new CPU features;
  * Patch 6, remove decode_lsx(); 
  * Patches 7-18, delete opcode definition, modify translation function;
  * Patches 20-22, split V1 patch20 to V2 patch20-22. 


V2: https://patchew.org/QEMU/1626861198-6133-1-git-send-email-gaosong@loongson.cn/
V1: https://patchew.org/QEMU/1624881885-31692-1-git-send-email-gaosong@loongson.cn/

Please review!

thnaks.

Song Gao (19):
  target/loongarch: Add README
  target/loongarch: Add core definition
  target/loongarch: Add main translation routines
  target/loongarch: Add fixed point arithmetic instruction translation
  target/loongarch: Add fixed point shift instruction translation
  target/loongarch: Add fixed point bit instruction translation
  target/loongarch: Add fixed point load/store instruction translation
  target/loongarch: Add fixed point atomic instruction translation
  target/loongarch: Add fixed point extra instruction translation
  target/loongarch: Add floating point arithmetic instruction
    translation
  target/loongarch: Add floating point comparison instruction
    translation
  target/loongarch: Add floating point conversion instruction
    translation
  target/loongarch: Add floating point move instruction translation
  target/loongarch: Add floating point load/store instruction
    translation
  target/loongarch: Add branch instruction translation
  target/loongarch: Add disassembler
  LoongArch Linux User Emulation
  default-configs: Add loongarch linux-user support
  target/loongarch: Add target build suport

 MAINTAINERS                                 |    6 +
 configs/targets/loongarch64-linux-user.mak  |    3 +
 disas/loongarch.c                           | 2511 +++++++++++++++++++++++++++
 disas/meson.build                           |    1 +
 include/disas/dis-asm.h                     |    2 +
 include/elf.h                               |    2 +
 linux-user/elfload.c                        |   58 +
 linux-user/loongarch64/cpu_loop.c           |  108 ++
 linux-user/loongarch64/signal.c             |  178 ++
 linux-user/loongarch64/sockbits.h           |    1 +
 linux-user/loongarch64/syscall_nr.h         |  307 ++++
 linux-user/loongarch64/target_cpu.h         |   36 +
 linux-user/loongarch64/target_elf.h         |   14 +
 linux-user/loongarch64/target_errno_defs.h  |    7 +
 linux-user/loongarch64/target_fcntl.h       |   12 +
 linux-user/loongarch64/target_signal.h      |   28 +
 linux-user/loongarch64/target_structs.h     |   49 +
 linux-user/loongarch64/target_syscall.h     |   46 +
 linux-user/loongarch64/termbits.h           |  229 +++
 linux-user/syscall_defs.h                   |   10 +-
 meson.build                                 |    1 +
 target/loongarch/README                     |    5 +
 target/loongarch/cpu-param.h                |   19 +
 target/loongarch/cpu.c                      |  286 +++
 target/loongarch/cpu.h                      |  145 ++
 target/loongarch/fpu_helper.c               |  947 ++++++++++
 target/loongarch/helper.h                   |  102 ++
 target/loongarch/insn_trans/trans_arith.c   |  334 ++++
 target/loongarch/insn_trans/trans_atomic.c  |  132 ++
 target/loongarch/insn_trans/trans_bit.c     |  297 ++++
 target/loongarch/insn_trans/trans_branch.c  |   84 +
 target/loongarch/insn_trans/trans_extra.c   |   88 +
 target/loongarch/insn_trans/trans_farith.c  |   79 +
 target/loongarch/insn_trans/trans_fcmp.c    |  279 +++
 target/loongarch/insn_trans/trans_fcnv.c    |   36 +
 target/loongarch/insn_trans/trans_fmemory.c |  143 ++
 target/loongarch/insn_trans/trans_fmov.c    |  159 ++
 target/loongarch/insn_trans/trans_memory.c  |  263 +++
 target/loongarch/insn_trans/trans_shift.c   |  154 ++
 target/loongarch/insns.decode               |  480 +++++
 target/loongarch/internals.h                |   24 +
 target/loongarch/meson.build                |   18 +
 target/loongarch/op_helper.c                |   85 +
 target/loongarch/translate.c                |  309 ++++
 target/loongarch/translate.h                |   54 +
 target/meson.build                          |    1 +
 46 files changed, 8128 insertions(+), 4 deletions(-)
 create mode 100644 configs/targets/loongarch64-linux-user.mak
 create mode 100644 disas/loongarch.c
 create mode 100644 linux-user/loongarch64/cpu_loop.c
 create mode 100644 linux-user/loongarch64/signal.c
 create mode 100644 linux-user/loongarch64/sockbits.h
 create mode 100644 linux-user/loongarch64/syscall_nr.h
 create mode 100644 linux-user/loongarch64/target_cpu.h
 create mode 100644 linux-user/loongarch64/target_elf.h
 create mode 100644 linux-user/loongarch64/target_errno_defs.h
 create mode 100644 linux-user/loongarch64/target_fcntl.h
 create mode 100644 linux-user/loongarch64/target_signal.h
 create mode 100644 linux-user/loongarch64/target_structs.h
 create mode 100644 linux-user/loongarch64/target_syscall.h
 create mode 100644 linux-user/loongarch64/termbits.h
 create mode 100644 target/loongarch/README
 create mode 100644 target/loongarch/cpu-param.h
 create mode 100644 target/loongarch/cpu.c
 create mode 100644 target/loongarch/cpu.h
 create mode 100644 target/loongarch/fpu_helper.c
 create mode 100644 target/loongarch/helper.h
 create mode 100644 target/loongarch/insn_trans/trans_arith.c
 create mode 100644 target/loongarch/insn_trans/trans_atomic.c
 create mode 100644 target/loongarch/insn_trans/trans_bit.c
 create mode 100644 target/loongarch/insn_trans/trans_branch.c
 create mode 100644 target/loongarch/insn_trans/trans_extra.c
 create mode 100644 target/loongarch/insn_trans/trans_farith.c
 create mode 100644 target/loongarch/insn_trans/trans_fcmp.c
 create mode 100644 target/loongarch/insn_trans/trans_fcnv.c
 create mode 100644 target/loongarch/insn_trans/trans_fmemory.c
 create mode 100644 target/loongarch/insn_trans/trans_fmov.c
 create mode 100644 target/loongarch/insn_trans/trans_memory.c
 create mode 100644 target/loongarch/insn_trans/trans_shift.c
 create mode 100644 target/loongarch/insns.decode
 create mode 100644 target/loongarch/internals.h
 create mode 100644 target/loongarch/meson.build
 create mode 100644 target/loongarch/op_helper.c
 create mode 100644 target/loongarch/translate.c
 create mode 100644 target/loongarch/translate.h

-- 
1.8.3.1