Sean Anderson and Alex Bennée
4f45b2c352
semihosting: Fix GDB File-I/O FLEN
...
fstat returns 0 on success and -1 on error. Since we have already
checked for error, ret must be zero. Therefore, any call to fstat on a
non-empty file will return -1/EOVERFLOW.
Restore the original logic that just did a byteswap. I don't really know
what the intention of the fixed commit was.
Fixes: a6300ed6b7 ("semihosting: Split out semihost_sys_flen")
Signed-off-by: Sean Anderson <sean.anderson@linux.dev >
Reviewed-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20251027110344.2289945-36-alex.bennee@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
2025-10-29 14:13:40 +00:00
Marc-André Lureau and Paolo Bonzini
1b21518f73
char: rename CharBackend->CharFrontend
...
The actual backend is "Chardev", CharBackend is the frontend side of
it (whatever talks to the backend), let's rename it for readability.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com >
Link: https://lore.kernel.org/r/20251022074612.1258413-1-marcandre.lureau@redhat.com
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com >
2025-10-28 14:49:52 +01:00
Pierrick Bouvier and Alex Bennée
c9e79557e4
semihosting/arm-compat-semi: compile once in system and per target for user mode
...
We don't have any target dependency left in system mode, so we can
compile once.
User mode depends on qemu.h, which is duplicated between linux and bsd,
so we can't easily compile it once.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-13-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-16-alex.bennee@linaro.org >
2025-09-26 10:07:53 +01:00
Pierrick Bouvier and Alex Bennée
d3fe754007
semihosting/arm-compat-semi: remove dependency on cpu.h
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-12-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-15-alex.bennee@linaro.org >
2025-09-26 10:07:53 +01:00
Pierrick Bouvier and Alex Bennée
ab385d594c
semihosting/arm-compat-semi: eradicate target_long
...
We use int64_t or int32_t depending on ret size.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-11-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-14-alex.bennee@linaro.org >
2025-09-26 10:07:53 +01:00
Pierrick Bouvier and Alex Bennée
6dfbf9b6cf
semihosting/arm-compat-semi: replace target_ulong
...
Replace with vaddr or uint64_t where appropriate.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-10-pierrick.bouvier@linaro.org >
[AJB: tweak commit message]
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-13-alex.bennee@linaro.org >
2025-09-26 10:05:48 +01:00
Pierrick Bouvier and Alex Bennée
feb49fa79b
semihosting/arm-compat-semi: eradicate sizeof(target_ulong)
...
No semantic change.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-9-pierrick.bouvier@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-12-alex.bennee@linaro.org >
2025-09-26 09:55:19 +01:00
Pierrick Bouvier and Alex Bennée
9e65902904
include/semihosting/common-semi: extract common_semi API
...
We transform target/{arm,riscv}/common-semi-target.h headers to proper
compilation units, and use them in arm-compat-semi.c.
This way, we can include only the declaration header (which is target
agnostic), and selectively link the appropriate implementation based on
current target.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-8-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-11-alex.bennee@linaro.org >
2025-09-26 09:55:19 +01:00
Pierrick Bouvier and Alex Bennée
a92e151bd0
semihosting/arm-compat-semi: change common_semi_sys_exit_extended
...
We now check only is sys_exit is extended.
This allows to break dependency to TARGET_SYS_EXIT_EXTENDED which will
not be available anymore from this code.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-5-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-8-alex.bennee@linaro.org >
2025-09-26 09:55:19 +01:00
Pierrick Bouvier and Alex Bennée
d8028d4ede
semihosting/guestfd: compile once for system/user
...
We move relevant code to semihosting/arm-compat-semi.c, and add
functions to query CONFIG_ARM_COMPATIBLE_SEMIHOSTING at runtime.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-4-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-7-alex.bennee@linaro.org >
2025-09-26 09:55:19 +01:00
Pierrick Bouvier and Alex Bennée
664172404a
semihosting/syscalls: replace uint64_t with vaddr where appropriate
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-3-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-6-alex.bennee@linaro.org >
2025-09-26 09:55:19 +01:00
Pierrick Bouvier and Alex Bennée
abc4522d01
semihosting/syscalls: compile once in system and per target for user mode
...
We replace target_ulong mechanically by uint64_t.
We can't compile (easily) this code once for user, as it relies on
various target/function types, so leave it in specific_ss for user mode.
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Message-ID: <20250822150058.18692-2-pierrick.bouvier@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250922093711.2768983-5-alex.bennee@linaro.org >
2025-09-26 09:55:19 +01:00
Richard Henderson
7adf9ebb0a
semihosting: Initialize heap once per process
...
While semihosting isn't really thread aware, the current
implementation allocates space for the heap per-thread.
Remove the heap_base and heap_limit fields from TaskState.
Replace with static variables within do_common_semihosting.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-08-28 06:39:25 +10:00
Richard Henderson
05c84cf8df
semihosting: Retrieve stack top from image_info
...
Remove the write-once field TaskState.stack_base, and use the
same value from struct image_info.
Reviewed-by: Peter Maydell <peter.maydell@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-08-28 06:39:25 +10:00
Philippe Mathieu-Daudé and Alex Bennée
b8e6bfd669
semihosting/uaccess: Compile once
...
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250526095213.14113-3-philmd@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250627112512.1880708-5-alex.bennee@linaro.org >
2025-07-02 10:09:48 +01:00
Philippe Mathieu-Daudé and Alex Bennée
328c1a0b86
semihosting/uaccess: Remove uses of target_ulong type
...
Replace target_ulong by vaddr or size_t types to match
cpu_memory_rw_debug() prototype in "exec/cpu-common.h":
> int cpu_memory_rw_debug(CPUState *cpu, vaddr addr,
> void *ptr, size_t len,
> bool is_write);
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250526095213.14113-2-philmd@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-ID: <20250627112512.1880708-4-alex.bennee@linaro.org >
2025-07-02 10:09:48 +01:00
Philippe Mathieu-Daudé and Richard Henderson
84307cd602
include: Remove 'exec/exec-all.h'
...
"exec/exec-all.h" is now fully empty, let's remove it.
Mechanical change running:
$ sed -i '/exec\/exec-all.h/d' $(git grep -wl exec/exec-all.h)
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250424202412.91612-14-philmd@linaro.org >
2025-04-30 12:45:05 -07:00
Philippe Mathieu-Daudé and Richard Henderson
fe1a3ace13
accel/tcg: Extract probe API out of 'exec/exec-all.h'
...
Declare probe methods in "accel/tcg/probe.h" to emphasize
they are specific to TCG accelerator.
Suggested-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Mark Cave-Ayland <mark.caveayland@nutanix.com >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250424202412.91612-13-philmd@linaro.org >
2025-04-30 12:45:05 -07:00
Pierrick Bouvier and Richard Henderson
0df783b2fb
exec/cpu-all: remove this header
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250325045915.994760-16-pierrick.bouvier@linaro.org >
2025-04-23 15:04:57 -07:00
Pierrick Bouvier and Richard Henderson
9c2ff9cdc9
exec/cpu-all: remove exec/target_page include
...
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-23 15:04:57 -07:00
Pierrick Bouvier and Richard Henderson
4d43552abe
exec/cpu-all: extract tlb flags defines to exec/tlb-flags.h
...
Signed-off-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
Message-ID: <20250320223002.2915728-3-pierrick.bouvier@linaro.org >
2025-04-23 14:08:48 -07:00
Richard Henderson
17a71e8969
semihosting: Assert is_user in user-only semihosting_enabled
...
Suggested-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-23 14:08:33 -07:00
Richard Henderson
d0b4cfa629
semihosting: Move user-only implementation out-of-line
...
Avoid testing CONFIG_USER_ONLY in semihost.h.
The only function that's required is semihosting_enabled.
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-23 14:08:32 -07:00
Richard Henderson
efe25c260c
include/exec: Split out accel/tcg/cpu-mmu-index.h
...
The implementation of cpu_mmu_index was split between cpu-common.h
and cpu-all.h, depending on CONFIG_USER_ONLY. We already have the
plumbing common to user and system mode. Using MMU_USER_IDX
requires the cpu.h for a specific target, and so is restricted to
when we're compiling per-target.
Include the new header only where needed.
Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org >
Signed-off-by: Richard Henderson <richard.henderson@linaro.org >
2025-04-23 14:08:17 -07:00
Philippe Mathieu-Daudé and Alex Bennée
bb0c5be8e9
semihosting/meson: Build config.o and console.o once
...
config.c and console.c don't use any target specific
headers anymore, move them from specific_ss[] to
system_ss[] so they are built once, but will also be
linked once, removing global symbol clash in a single
QEMU binary.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org >
Reviewed-by: Richard Henderson <richard.henderson@linaro.org >
Message-Id: <20250103171037.11265-6-philmd@linaro.org >
Signed-off-by: Alex Bennée <alex.bennee@linaro.org >
Message-Id: <20250116160306.1709518-8-alex.bennee@linaro.org >
2025-01-17 10:44:03 +00:00