All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 00/74] semihosting cleanup
@ 2022-05-03 19:47 Richard Henderson
  2022-05-03 19:47 ` [PATCH v2 01/74] semihosting: Move exec/softmmu-semi.h to semihosting/softmmu-uaccess.h Richard Henderson
                   ` (73 more replies)
  0 siblings, 74 replies; 92+ messages in thread
From: Richard Henderson @ 2022-05-03 19:47 UTC (permalink / raw)
  To: qemu-devel; +Cc: alex.bennee, f4bug, crwulff, laurent, shorne

Changes for v2:
  * Drop m68k and nios2 patches to move semihosting exception to helper.

  * Merge semihosting console into GuestFD.

  * Split syscalls into new files.
    Having them in guestfd.[ch] seemed wrong.

  * Standardize on GDB remote-protocol errno.  Having done this, I'm
    not sure it's the best idea -- mips and xtensa semihosting have a
    larger set of errno values than GDB.  Better, perhaps, to standardize
    on host errno and then convert GDB errno back to host on the way
    out of gdbstub.c:handle_file_io.

  * Convert mips and xtensa to semihosting/syscalls.h

  * Implement rx semihosting, with tests.

Still on the to-do list:

  * Non-Coldfire m68k semihosting.  The libgloss spec says that "bkpt"
    may be used when "halt" is not available in the ISA.  Add m68k
    semihosting tests -- we already have a cross toolchain in docker,
    so this should be easy.

  * Support dynamic endianness in arm-compat-semi.c; add tests for
    aarch64 big-endian system mode.

  * Split this patch set.  :-)


r~


Cc: alex.bennee@linaro.org
Cc: f4bug@amsat.org
Cc: crwulff@gmail.com
Cc: laurent@vivier.eu
Cc: shorne@gmail.com


Richard Henderson (74):
  semihosting: Move exec/softmmu-semi.h to semihosting/softmmu-uaccess.h
  semihosting: Return failure from softmmu-uaccess.h functions
  semihosting: Improve condition for config.c and console.c
  semihosting: Move softmmu-uaccess.h functions out of line
  semihosting: Add target_strlen for softmmu-uaccess.h
  semihosting: Simplify softmmu_lock_user_string
  semihosting: Split out guestfd.c
  semihosting: Generalize GuestFDFeatureFile
  semihosting: Return void from do_common_semihosting
  semihosting: Adjust error checking in common_semi_cb
  semihosting: Move common-semi.h to include/semihosting/
  include/exec: Move gdb open flags to gdbstub.h
  include/exec: Move gdb_stat and gdb_timeval to gdbstub.h
  include/exec: Define errno values in gdbstub.h
  semihosting: Use struct gdb_stat in common_semi_flen_cb
  semihosting: Split is_64bit_semihosting per target
  semihosting: Split common_semi_flen_buf per target
  semihosting: Split out common_semi_has_synccache
  semihosting: Use env more often in do_common_semihosting
  semihosting: Move GET_ARG/SET_ARG earlier in the file
  semihosting: Split out semihost_sys_open
  semihosting: Split out semihost_sys_close
  semihosting: Split out semihost_sys_read
  semihosting: Split out semihost_sys_write
  semihosting: Bound length for semihost_sys_{read,write}
  semihosting: Split out semihost_sys_lseek
  semihosting: Split out semihost_sys_isatty
  semihosting: Split out semihost_sys_flen
  semihosting: Split out semihost_sys_remove
  semihosting: Split out semihost_sys_rename
  semihosting: Split out semihost_sys_system
  semihosting: Create semihost_sys_{stat,fstat}
  semihosting: Create semihost_sys_gettimeofday
  gdbstub: Widen gdb_syscall_complete_cb return value
  semihosting: Fix docs comment for qemu_semihosting_console_inc
  semihosting: Pass CPUState to qemu_semihosting_console_inc
  semihosting: Expand qemu_semihosting_console_inc to read
  semihosting: Cleanup chardev init
  semihosting: Create qemu_semihosting_console_write
  semihosting: Add GuestFDConsole
  semihosting: Create qemu_semihosting_guestfd_init
  semihosting: Use console_in_gf for SYS_READC
  semihosting: Use console_out_gf for SYS_WRITEC
  semihosting: Remove qemu_semihosting_console_outc
  semihosting: Use console_out_gf for SYS_WRITE0
  semihosting: Remove qemu_semihosting_console_outs
  semihosting: Create semihost_sys_poll_one
  target/m68k: Eliminate m68k_semi_is_fseek
  target/m68k: Make semihosting system only
  target/m68k: Use semihosting/syscalls.h
  target/nios2: Eliminate nios2_semi_is_lseek
  target/nios2: Move nios2-semi.c to nios2_softmmu_ss
  target/nios2: Use semihosting/syscalls.h
  target/mips: Use an exception for semihosting
  target/mips: Add UHI errno values
  target/mips: Create report_fault for semihosting
  target/mips: Drop link syscall from semihosting
  target/mips: Drop pread and pwrite syscalls from semihosting
  target/mips: Use semihosting/syscalls.h
  target/mips: Avoid qemu_semihosting_log_out for UHI_plog
  target/mips: Use error_report for UHI_assert
  semihosting: Remove qemu_semihosting_log_out
  target/mips: Simplify UHI_argnlen and UHI_argn
  target/mips: Remove GET_TARGET_STRING and FREE_TARGET_STRING
  target/xtensa: Use an exception for semihosting
  target/xtensa: Use semihosting/syscalls.h
  tests/docker: Add debian-rx-cross image
  hw/rx: Handle a kernel file that is ELF
  target/rx: Fix the base of the fixed vector table
  target/rx: Name the exceptions
  target/rx: Consolidate exception helpers
  target/rx: Cleanup rx_cpu_do_interrupt
  target/rx: Implement libgloss semihosting
  tests/tcg/rx: Enable semihosting multiarch tests

 configs/devices/rx-softmmu/default.mak        |    1 +
 configs/targets/aarch64-linux-user.mak        |    1 +
 configs/targets/aarch64_be-linux-user.mak     |    1 +
 configs/targets/arm-linux-user.mak            |    1 +
 configs/targets/armeb-linux-user.mak          |    1 +
 configs/targets/riscv32-linux-user.mak        |    1 +
 configs/targets/riscv64-linux-user.mak        |    1 +
 include/exec/gdbstub.h                        |   67 +-
 include/exec/softmmu-semi.h                   |  101 --
 .../semihosting}/common-semi.h                |    2 +-
 include/semihosting/console.h                 |   74 +-
 include/semihosting/guestfd.h                 |   52 +
 include/semihosting/semihost.h                |   14 +-
 include/semihosting/softmmu-uaccess.h         |   59 +
 include/semihosting/syscalls.h                |   75 ++
 target/arm/common-semi-target.h               |   62 +
 target/mips/cpu.h                             |    3 +-
 target/mips/tcg/tcg-internal.h                |    2 +
 target/riscv/common-semi-target.h             |   50 +
 target/rx/cpu.h                               |   26 +
 target/rx/helper.h                            |    6 +-
 target/xtensa/cpu.h                           |    3 +-
 target/xtensa/helper.h                        |    3 -
 target/mips/tcg/sysemu_helper.h.inc           |    2 -
 gdbstub.c                                     |    7 +-
 hw/rx/rx-gdbsim.c                             |   24 +-
 hw/xtensa/sim.c                               |    3 -
 linux-user/aarch64/cpu_loop.c                 |    2 +-
 linux-user/arm/cpu_loop.c                     |    2 +-
 linux-user/m68k/cpu_loop.c                    |    5 -
 linux-user/main.c                             |    9 +
 linux-user/riscv/cpu_loop.c                   |    2 +-
 linux-user/semihost.c                         |   48 +-
 semihosting/arm-compat-semi.c                 |  987 ++++------------
 semihosting/config.c                          |   17 +-
 semihosting/console.c                         |  144 +--
 semihosting/guestfd.c                         |  160 +++
 semihosting/syscalls.c                        | 1008 +++++++++++++++++
 semihosting/uaccess.c                         |   71 ++
 softmmu/vl.c                                  |    3 +-
 stubs/semihost.c                              |    6 +-
 target/arm/helper.c                           |    4 +-
 target/arm/m_helper.c                         |    2 +-
 target/m68k/m68k-semi.c                       |  368 +-----
 target/mips/tcg/exception.c                   |    1 +
 target/mips/tcg/sysemu/mips-semi.c            |  468 ++++----
 target/mips/tcg/sysemu/tlb_helper.c           |    4 +
 target/mips/tcg/translate.c                   |   12 +-
 target/nios2/nios2-semi.c                     |  354 +-----
 target/riscv/cpu_helper.c                     |    2 +-
 target/rx/helper.c                            |  116 +-
 target/rx/op_helper.c                         |   30 +-
 target/rx/rx-semi.c                           |  165 +++
 target/rx/translate.c                         |   28 +-
 target/xtensa/exc_helper.c                    |    4 +
 target/xtensa/translate.c                     |    3 +-
 target/xtensa/xtensa-semi.c                   |  306 ++---
 tests/tcg/rx/outc.c                           |   15 +
 target/mips/tcg/micromips_translate.c.inc     |    6 +-
 target/mips/tcg/mips16e_translate.c.inc       |    2 +-
 target/mips/tcg/nanomips_translate.c.inc      |    4 +-
 MAINTAINERS                                   |    1 +
 qemu-options.hx                               |   13 +-
 semihosting/meson.build                       |    6 +
 target/m68k/meson.build                       |    6 +-
 target/nios2/meson.build                      |    4 +-
 target/rx/meson.build                         |    4 +-
 tests/docker/Makefile.include                 |    6 +
 .../debian-rx-cross.d/build-toolchain.sh      |   58 +
 tests/tcg/configure.sh                        |    6 +
 tests/tcg/rx/Makefile.softmmu-target          |   24 +
 71 files changed, 2825 insertions(+), 2303 deletions(-)
 delete mode 100644 include/exec/softmmu-semi.h
 rename {semihosting => include/semihosting}/common-semi.h (96%)
 create mode 100644 include/semihosting/guestfd.h
 create mode 100644 include/semihosting/softmmu-uaccess.h
 create mode 100644 include/semihosting/syscalls.h
 create mode 100644 target/arm/common-semi-target.h
 create mode 100644 target/riscv/common-semi-target.h
 create mode 100644 semihosting/guestfd.c
 create mode 100644 semihosting/syscalls.c
 create mode 100644 semihosting/uaccess.c
 create mode 100644 target/rx/rx-semi.c
 create mode 100644 tests/tcg/rx/outc.c
 create mode 100755 tests/docker/dockerfiles/debian-rx-cross.d/build-toolchain.sh
 create mode 100644 tests/tcg/rx/Makefile.softmmu-target

-- 
2.34.1



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

end of thread, other threads:[~2022-05-17  1:48 UTC | newest]

Thread overview: 92+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-05-03 19:47 [PATCH v2 00/74] semihosting cleanup Richard Henderson
2022-05-03 19:47 ` [PATCH v2 01/74] semihosting: Move exec/softmmu-semi.h to semihosting/softmmu-uaccess.h Richard Henderson
2022-05-16 14:36   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 02/74] semihosting: Return failure from softmmu-uaccess.h functions Richard Henderson
2022-05-16 14:42   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 03/74] semihosting: Improve condition for config.c and console.c Richard Henderson
2022-05-16 15:00   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 04/74] semihosting: Move softmmu-uaccess.h functions out of line Richard Henderson
2022-05-16 15:04   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 05/74] semihosting: Add target_strlen for softmmu-uaccess.h Richard Henderson
2022-05-16 15:11   ` Peter Maydell
2022-05-17  1:33     ` Richard Henderson
2022-05-03 19:47 ` [PATCH v2 06/74] semihosting: Simplify softmmu_lock_user_string Richard Henderson
2022-05-16 15:12   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 07/74] semihosting: Split out guestfd.c Richard Henderson
2022-05-16 15:14   ` Peter Maydell
2022-05-17  1:47     ` Richard Henderson
2022-05-03 19:47 ` [PATCH v2 08/74] semihosting: Generalize GuestFDFeatureFile Richard Henderson
2022-05-16 15:20   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 09/74] semihosting: Return void from do_common_semihosting Richard Henderson
2022-05-16 15:31   ` Peter Maydell
2022-05-03 19:47 ` [PATCH v2 10/74] semihosting: Adjust error checking in common_semi_cb Richard Henderson
2022-05-03 19:47 ` [PATCH v2 11/74] semihosting: Move common-semi.h to include/semihosting/ Richard Henderson
2022-05-03 19:47 ` [PATCH v2 12/74] include/exec: Move gdb open flags to gdbstub.h Richard Henderson
2022-05-03 19:47 ` [PATCH v2 13/74] include/exec: Move gdb_stat and gdb_timeval " Richard Henderson
2022-05-03 19:47 ` [PATCH v2 14/74] include/exec: Define errno values in gdbstub.h Richard Henderson
2022-05-03 19:47 ` [PATCH v2 15/74] semihosting: Use struct gdb_stat in common_semi_flen_cb Richard Henderson
2022-05-03 19:47 ` [PATCH v2 16/74] semihosting: Split is_64bit_semihosting per target Richard Henderson
2022-05-04  8:58   ` Alistair Francis
2022-05-03 19:47 ` [PATCH v2 17/74] semihosting: Split common_semi_flen_buf " Richard Henderson
2022-05-04  8:59   ` Alistair Francis
2022-05-03 19:47 ` [PATCH v2 18/74] semihosting: Split out common_semi_has_synccache Richard Henderson
2022-05-04  9:01   ` Alistair Francis
2022-05-03 19:47 ` [PATCH v2 19/74] semihosting: Use env more often in do_common_semihosting Richard Henderson
2022-05-03 19:47 ` [PATCH v2 20/74] semihosting: Move GET_ARG/SET_ARG earlier in the file Richard Henderson
2022-05-03 19:47 ` [PATCH v2 21/74] semihosting: Split out semihost_sys_open Richard Henderson
2022-05-03 19:47 ` [PATCH v2 22/74] semihosting: Split out semihost_sys_close Richard Henderson
2022-05-03 19:47 ` [PATCH v2 23/74] semihosting: Split out semihost_sys_read Richard Henderson
2022-05-03 19:47 ` [PATCH v2 24/74] semihosting: Split out semihost_sys_write Richard Henderson
2022-05-03 19:47 ` [PATCH v2 25/74] semihosting: Bound length for semihost_sys_{read, write} Richard Henderson
2022-05-03 19:47 ` [PATCH v2 26/74] semihosting: Split out semihost_sys_lseek Richard Henderson
2022-05-03 19:47 ` [PATCH v2 27/74] semihosting: Split out semihost_sys_isatty Richard Henderson
2022-05-03 19:47 ` [PATCH v2 28/74] semihosting: Split out semihost_sys_flen Richard Henderson
2022-05-03 19:47 ` [PATCH v2 29/74] semihosting: Split out semihost_sys_remove Richard Henderson
2022-05-03 19:47 ` [PATCH v2 30/74] semihosting: Split out semihost_sys_rename Richard Henderson
2022-05-03 19:48 ` [PATCH v2 31/74] semihosting: Split out semihost_sys_system Richard Henderson
2022-05-03 19:48 ` [PATCH v2 32/74] semihosting: Create semihost_sys_{stat,fstat} Richard Henderson
2022-05-03 19:48 ` [PATCH v2 33/74] semihosting: Create semihost_sys_gettimeofday Richard Henderson
2022-05-03 19:48 ` [PATCH v2 34/74] gdbstub: Widen gdb_syscall_complete_cb return value Richard Henderson
2022-05-03 19:48 ` [PATCH v2 35/74] semihosting: Fix docs comment for qemu_semihosting_console_inc Richard Henderson
2022-05-03 19:48 ` [PATCH v2 36/74] semihosting: Pass CPUState to qemu_semihosting_console_inc Richard Henderson
2022-05-03 19:48 ` [PATCH v2 37/74] semihosting: Expand qemu_semihosting_console_inc to read Richard Henderson
2022-05-03 19:48 ` [PATCH v2 38/74] semihosting: Cleanup chardev init Richard Henderson
2022-05-03 19:48 ` [PATCH v2 39/74] semihosting: Create qemu_semihosting_console_write Richard Henderson
2022-05-03 19:48 ` [PATCH v2 40/74] semihosting: Add GuestFDConsole Richard Henderson
2022-05-03 19:48 ` [PATCH v2 41/74] semihosting: Create qemu_semihosting_guestfd_init Richard Henderson
2022-05-03 19:48 ` [PATCH v2 42/74] semihosting: Use console_in_gf for SYS_READC Richard Henderson
2022-05-03 19:48 ` [PATCH v2 43/74] semihosting: Use console_out_gf for SYS_WRITEC Richard Henderson
2022-05-03 19:48 ` [PATCH v2 44/74] semihosting: Remove qemu_semihosting_console_outc Richard Henderson
2022-05-03 19:48 ` [PATCH v2 45/74] semihosting: Use console_out_gf for SYS_WRITE0 Richard Henderson
2022-05-03 19:48 ` [PATCH v2 46/74] semihosting: Remove qemu_semihosting_console_outs Richard Henderson
2022-05-03 19:48 ` [PATCH v2 47/74] semihosting: Create semihost_sys_poll_one Richard Henderson
2022-05-03 19:48 ` [PATCH v2 48/74] target/m68k: Eliminate m68k_semi_is_fseek Richard Henderson
2022-05-03 19:48 ` [PATCH v2 49/74] target/m68k: Make semihosting system only Richard Henderson
2022-05-03 19:48 ` [PATCH v2 50/74] target/m68k: Use semihosting/syscalls.h Richard Henderson
2022-05-03 19:48 ` [PATCH v2 51/74] target/nios2: Eliminate nios2_semi_is_lseek Richard Henderson
2022-05-03 19:48 ` [PATCH v2 52/74] target/nios2: Move nios2-semi.c to nios2_softmmu_ss Richard Henderson
2022-05-03 19:48 ` [PATCH v2 53/74] target/nios2: Use semihosting/syscalls.h Richard Henderson
2022-05-03 19:48 ` [PATCH v2 54/74] target/mips: Use an exception for semihosting Richard Henderson
2022-05-03 19:48 ` [PATCH v2 55/74] target/mips: Add UHI errno values Richard Henderson
2022-05-03 19:48 ` [PATCH v2 56/74] target/mips: Create report_fault for semihosting Richard Henderson
2022-05-03 19:48 ` [PATCH v2 57/74] target/mips: Drop link syscall from semihosting Richard Henderson
2022-05-03 19:48 ` [PATCH v2 58/74] target/mips: Drop pread and pwrite syscalls " Richard Henderson
2022-05-03 19:48 ` [PATCH v2 59/74] target/mips: Use semihosting/syscalls.h Richard Henderson
2022-05-03 19:48 ` [PATCH v2 60/74] target/mips: Avoid qemu_semihosting_log_out for UHI_plog Richard Henderson
2022-05-03 19:48 ` [PATCH v2 61/74] target/mips: Use error_report for UHI_assert Richard Henderson
2022-05-03 19:48 ` [PATCH v2 62/74] semihosting: Remove qemu_semihosting_log_out Richard Henderson
2022-05-03 19:48 ` [PATCH v2 63/74] target/mips: Simplify UHI_argnlen and UHI_argn Richard Henderson
2022-05-03 19:48 ` [PATCH v2 64/74] target/mips: Remove GET_TARGET_STRING and FREE_TARGET_STRING Richard Henderson
2022-05-03 19:48 ` [PATCH v2 65/74] target/xtensa: Use an exception for semihosting Richard Henderson
2022-05-03 19:48 ` [PATCH v2 66/74] target/xtensa: Use semihosting/syscalls.h Richard Henderson
2022-05-03 19:48 ` [PATCH v2 67/74] tests/docker: Add debian-rx-cross image Richard Henderson
2022-05-03 19:48 ` [PATCH v2 68/74] hw/rx: Handle a kernel file that is ELF Richard Henderson
2022-05-13 15:44   ` Peter Maydell
2022-05-13 15:48     ` Richard Henderson
2022-05-13 16:40       ` Richard Henderson
2022-05-03 19:48 ` [PATCH v2 69/74] target/rx: Fix the base of the fixed vector table Richard Henderson
2022-05-03 19:48 ` [PATCH v2 70/74] target/rx: Name the exceptions Richard Henderson
2022-05-03 19:48 ` [PATCH v2 71/74] target/rx: Consolidate exception helpers Richard Henderson
2022-05-03 19:48 ` [PATCH v2 72/74] target/rx: Cleanup rx_cpu_do_interrupt Richard Henderson
2022-05-03 19:48 ` [PATCH v2 73/74] target/rx: Implement libgloss semihosting Richard Henderson
2022-05-03 19:48 ` [PATCH v2 74/74] tests/tcg/rx: Enable semihosting multiarch tests Richard Henderson

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.