[PATCH v21 00/13] Add LoongArch linux-user emulation support

Richard Henderson posted 13 patches 2 years, 4 months ago
Patches applied successfully (tree, apply log)
git fetch https://github.com/patchew-project/qemu tags/patchew/20220703085913.772936-1-richard.henderson@linaro.org
Maintainers: Laurent Vivier <laurent@vivier.eu>, Song Gao <gaosong@loongson.cn>, Xiaojuan Yang <yangxiaojuan@loongson.cn>
configs/targets/loongarch64-linux-user.mak    |   3 +
linux-user/loongarch64/sockbits.h             |  11 +
linux-user/loongarch64/syscall_nr.h           | 312 ++++++++++++++++
linux-user/loongarch64/target_cpu.h           |  34 ++
linux-user/loongarch64/target_elf.h           |  12 +
linux-user/loongarch64/target_errno_defs.h    |  12 +
linux-user/loongarch64/target_fcntl.h         |  11 +
linux-user/loongarch64/target_prctl.h         |   1 +
linux-user/loongarch64/target_resource.h      |  11 +
linux-user/loongarch64/target_signal.h        |  13 +
linux-user/loongarch64/target_structs.h       |  11 +
linux-user/loongarch64/target_syscall.h       |  48 +++
linux-user/loongarch64/termbits.h             |  11 +
linux-user/syscall_defs.h                     |   6 +-
target/loongarch/cpu.h                        |   8 +-
target/loongarch/helper.h                     |   2 +
target/loongarch/internals.h                  |   2 +
linux-user/elfload.c                          |  91 +++++
linux-user/loongarch64/cpu_loop.c             |  96 +++++
linux-user/loongarch64/signal.c               | 335 ++++++++++++++++++
target/loongarch/cpu.c                        |  34 +-
target/loongarch/gdbstub.c                    |   2 +-
target/loongarch/op_helper.c                  |  10 +-
.../insn_trans/trans_privileged.c.inc         |  36 ++
scripts/gensyscalls.sh                        |   2 +
scripts/qemu-binfmt-conf.sh                   |   6 +-
target/loongarch/README                       |  39 +-
27 files changed, 1144 insertions(+), 15 deletions(-)
create mode 100644 configs/targets/loongarch64-linux-user.mak
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_prctl.h
create mode 100644 linux-user/loongarch64/target_resource.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 linux-user/loongarch64/cpu_loop.c
create mode 100644 linux-user/loongarch64/signal.c
[PATCH v21 00/13] Add LoongArch linux-user emulation support
Posted by Richard Henderson 2 years, 4 months ago
Hi.  This is Song Gao's v20 [1], with patch 2 extensively rewritten
so that it handles lock_user properly.  It compiles, but I need
to update the docker image we produced last year so that I can
properly test this.

In the meantime, Song, can you please test this?


r~

[1] https://lore.kernel.org/qemu-devel/20220624031049.1716097-1-gaosong@loongson.cn/

Song Gao (13):
  linux-user: Add LoongArch generic header files
  linux-user: Add LoongArch signal support
  linux-user: Add LoongArch elf support
  linux-user: Add LoongArch syscall support
  linux-user: Add LoongArch cpu_loop support
  scripts: add loongarch64 binfmt config
  target/loongarch: remove badaddr from CPULoongArch
  target/loongarch: Fix missing update CSR_BADV
  target/loongarch: Fix helper_asrtle_d/asrtgt_d raise wrong exception
  target/loongarch: remove unused include hw/loader.h
  target/loongarch: Adjust functions and structure to support user-mode
  default-configs: Add loongarch linux-user support
  target/loongarch: Update README

 configs/targets/loongarch64-linux-user.mak    |   3 +
 linux-user/loongarch64/sockbits.h             |  11 +
 linux-user/loongarch64/syscall_nr.h           | 312 ++++++++++++++++
 linux-user/loongarch64/target_cpu.h           |  34 ++
 linux-user/loongarch64/target_elf.h           |  12 +
 linux-user/loongarch64/target_errno_defs.h    |  12 +
 linux-user/loongarch64/target_fcntl.h         |  11 +
 linux-user/loongarch64/target_prctl.h         |   1 +
 linux-user/loongarch64/target_resource.h      |  11 +
 linux-user/loongarch64/target_signal.h        |  13 +
 linux-user/loongarch64/target_structs.h       |  11 +
 linux-user/loongarch64/target_syscall.h       |  48 +++
 linux-user/loongarch64/termbits.h             |  11 +
 linux-user/syscall_defs.h                     |   6 +-
 target/loongarch/cpu.h                        |   8 +-
 target/loongarch/helper.h                     |   2 +
 target/loongarch/internals.h                  |   2 +
 linux-user/elfload.c                          |  91 +++++
 linux-user/loongarch64/cpu_loop.c             |  96 +++++
 linux-user/loongarch64/signal.c               | 335 ++++++++++++++++++
 target/loongarch/cpu.c                        |  34 +-
 target/loongarch/gdbstub.c                    |   2 +-
 target/loongarch/op_helper.c                  |  10 +-
 .../insn_trans/trans_privileged.c.inc         |  36 ++
 scripts/gensyscalls.sh                        |   2 +
 scripts/qemu-binfmt-conf.sh                   |   6 +-
 target/loongarch/README                       |  39 +-
 27 files changed, 1144 insertions(+), 15 deletions(-)
 create mode 100644 configs/targets/loongarch64-linux-user.mak
 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_prctl.h
 create mode 100644 linux-user/loongarch64/target_resource.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 linux-user/loongarch64/cpu_loop.c
 create mode 100644 linux-user/loongarch64/signal.c

-- 
2.34.1
Re: [PATCH v21 00/13] Add LoongArch linux-user emulation support
Posted by gaosong 2 years, 4 months ago
Hi, Richard

On 2022/7/3 下午4:59, Richard Henderson wrote:
> Hi.  This is Song Gao's v20 [1], with patch 2 extensively rewritten
> so that it handles lock_user properly.  It compiles, but I need
> to update the docker image we produced last year so that I can
> properly test this.
>
> In the meantime, Song, can you please test this?
>
Yes, I can,   but which test do you mean?
Test linxu-user with docker image?  like : 
https://wiki.qemu.org/Testing/DockerBuild#linux-user_Docker_targets

I had done test case 'make check'  and 'make check-tcg'.

Thanks
Song Gao
> r~
>
> [1] https://lore.kernel.org/qemu-devel/20220624031049.1716097-1-gaosong@loongson.cn/
>
> Song Gao (13):
>    linux-user: Add LoongArch generic header files
>    linux-user: Add LoongArch signal support
>    linux-user: Add LoongArch elf support
>    linux-user: Add LoongArch syscall support
>    linux-user: Add LoongArch cpu_loop support
>    scripts: add loongarch64 binfmt config
>    target/loongarch: remove badaddr from CPULoongArch
>    target/loongarch: Fix missing update CSR_BADV
>    target/loongarch: Fix helper_asrtle_d/asrtgt_d raise wrong exception
>    target/loongarch: remove unused include hw/loader.h
>    target/loongarch: Adjust functions and structure to support user-mode
>    default-configs: Add loongarch linux-user support
>    target/loongarch: Update README
>
>   configs/targets/loongarch64-linux-user.mak    |   3 +
>   linux-user/loongarch64/sockbits.h             |  11 +
>   linux-user/loongarch64/syscall_nr.h           | 312 ++++++++++++++++
>   linux-user/loongarch64/target_cpu.h           |  34 ++
>   linux-user/loongarch64/target_elf.h           |  12 +
>   linux-user/loongarch64/target_errno_defs.h    |  12 +
>   linux-user/loongarch64/target_fcntl.h         |  11 +
>   linux-user/loongarch64/target_prctl.h         |   1 +
>   linux-user/loongarch64/target_resource.h      |  11 +
>   linux-user/loongarch64/target_signal.h        |  13 +
>   linux-user/loongarch64/target_structs.h       |  11 +
>   linux-user/loongarch64/target_syscall.h       |  48 +++
>   linux-user/loongarch64/termbits.h             |  11 +
>   linux-user/syscall_defs.h                     |   6 +-
>   target/loongarch/cpu.h                        |   8 +-
>   target/loongarch/helper.h                     |   2 +
>   target/loongarch/internals.h                  |   2 +
>   linux-user/elfload.c                          |  91 +++++
>   linux-user/loongarch64/cpu_loop.c             |  96 +++++
>   linux-user/loongarch64/signal.c               | 335 ++++++++++++++++++
>   target/loongarch/cpu.c                        |  34 +-
>   target/loongarch/gdbstub.c                    |   2 +-
>   target/loongarch/op_helper.c                  |  10 +-
>   .../insn_trans/trans_privileged.c.inc         |  36 ++
>   scripts/gensyscalls.sh                        |   2 +
>   scripts/qemu-binfmt-conf.sh                   |   6 +-
>   target/loongarch/README                       |  39 +-
>   27 files changed, 1144 insertions(+), 15 deletions(-)
>   create mode 100644 configs/targets/loongarch64-linux-user.mak
>   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_prctl.h
>   create mode 100644 linux-user/loongarch64/target_resource.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 linux-user/loongarch64/cpu_loop.c
>   create mode 100644 linux-user/loongarch64/signal.c
>


Re: [PATCH v21 00/13] Add LoongArch linux-user emulation support
Posted by Richard Henderson 2 years, 4 months ago
On 7/4/22 09:27, gaosong wrote:
> Hi, Richard
> 
> On 2022/7/3 下午4:59, Richard Henderson wrote:
>> Hi.  This is Song Gao's v20 [1], with patch 2 extensively rewritten
>> so that it handles lock_user properly.  It compiles, but I need
>> to update the docker image we produced last year so that I can
>> properly test this.
>>
>> In the meantime, Song, can you please test this?
>>
> Yes, I can,   but which test do you mean?
> Test linxu-user with docker image?  like : 
> https://wiki.qemu.org/Testing/DockerBuild#linux-user_Docker_targets
> 
> I had done test case 'make check'  and 'make check-tcg'.

I just meant check-tcg with the loongarch64 compiler installed.
Thanks.

Queueing this patch set.


r~