mbox series

[0/5] semihosting: Reduce target specific code

Message ID 20250103171037.11265-1-philmd@linaro.org
Headers show
Series semihosting: Reduce target specific code | expand

Message

Philippe Mathieu-Daudé Jan. 3, 2025, 5:10 p.m. UTC
This series makes semihosting config.c and console.c
target agnostic, building them once, removing symbol
collision of the following functions in the single
binary:

 - qemu_semihosting_chardev_init
 - qemu_semihosting_config_options
 - qemu_semihosting_config_opts
 - qemu_semihosting_enable
 - semihosting_arg_fallback
 - semihosting_enabled
 - semihosting_get_argc
 - semihosting_get_target

This function is still problematic, being built for
each target:

 - qemu_semihosting_guestfd_init

Note, it depends on CONFIG_ARM_COMPATIBLE_SEMIHOSTING
which is target specific, so doesn't scale in a
heterogeneous setup like the ZynqMP machine, having
ARM cores with CONFIG_ARM_COMPATIBLE_SEMIHOSTING=y and
MicroBlaze ones with CONFIG_ARM_COMPATIBLE_SEMIHOSTING=n.

I suppose the semihosting API needs rework to consider
the CPUClass? I'll let that investigation for the
maintainer ;)

Regards,

Phil.

Philippe Mathieu-Daudé (5):
  semihosting/syscalls: Include missing 'exec/cpu-defs.h' header
  semihosting/uaccess: Include missing 'exec/cpu-all.h' header
  semihosting/arm-compat: Include missing 'cpu.h' header
  semihosting/console: Avoid including 'cpu.h'
  semihosting/meson: Build config.o and console.o once

 include/semihosting/console.h  | 2 --
 include/semihosting/syscalls.h | 1 +
 semihosting/arm-compat-semi.c  | 1 +
 semihosting/console.c          | 3 ++-
 semihosting/uaccess.c          | 1 +
 semihosting/meson.build        | 9 ++++++---
 6 files changed, 11 insertions(+), 6 deletions(-)

Comments

Richard Henderson Jan. 6, 2025, 5:28 p.m. UTC | #1
On 1/3/25 09:10, Philippe Mathieu-Daudé wrote:
> Philippe Mathieu-Daudé (5):
>    semihosting/syscalls: Include missing 'exec/cpu-defs.h' header
>    semihosting/uaccess: Include missing 'exec/cpu-all.h' header
>    semihosting/arm-compat: Include missing 'cpu.h' header
>    semihosting/console: Avoid including 'cpu.h'
>    semihosting/meson: Build config.o and console.o once

Reviewed-by: Richard Henderson <richard.henderson@linaro.org>

r~