* [PATCH v4 1/8] semihosting: Include missing 'gdbstub/syscalls.h' header
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 2/8] target/m68k: Add semihosting stub Philippe Mathieu-Daudé
` (7 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
"semihosting/syscalls.h" requires definitions from
"gdbstub/syscalls.h", include it in order to avoid:
include/semihosting/syscalls.h:23:38: error: unknown type name 'gdb_syscall_complete_cb'
void semihost_sys_open(CPUState *cs, gdb_syscall_complete_cb complete,
^
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
include/semihosting/syscalls.h | 2 ++
1 file changed, 2 insertions(+)
diff --git a/include/semihosting/syscalls.h b/include/semihosting/syscalls.h
index 3a5ec229eb..b5937c619a 100644
--- a/include/semihosting/syscalls.h
+++ b/include/semihosting/syscalls.h
@@ -9,6 +9,8 @@
#ifndef SEMIHOSTING_SYSCALLS_H
#define SEMIHOSTING_SYSCALLS_H
+#include "gdbstub/syscalls.h"
+
/*
* Argument loading from the guest is performed by the caller;
* results are returned via the 'complete' callback.
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 2/8] target/m68k: Add semihosting stub
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 1/8] semihosting: Include missing 'gdbstub/syscalls.h' header Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 3/8] target/mips: " Philippe Mathieu-Daudé
` (6 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
Since the SEMIHOSTING feature is optional, we need
a stub to link when it is disabled.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/m68k/semihosting-stub.c | 15 +++++++++++++++
target/m68k/meson.build | 5 ++++-
2 files changed, 19 insertions(+), 1 deletion(-)
create mode 100644 target/m68k/semihosting-stub.c
diff --git a/target/m68k/semihosting-stub.c b/target/m68k/semihosting-stub.c
new file mode 100644
index 0000000000..d6a5965e29
--- /dev/null
+++ b/target/m68k/semihosting-stub.c
@@ -0,0 +1,15 @@
+/*
+ * m68k/ColdFire semihosting stub
+ *
+ * SPDX-FileContributor: Philippe Mathieu-Daudé <philmd@linaro.org>
+ * SPDX-FileCopyrightText: 2024 Linaro Ltd.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "qemu/osdep.h"
+#include "cpu.h"
+
+void do_m68k_semihosting(CPUM68KState *env, int nr)
+{
+ g_assert_not_reached();
+}
diff --git a/target/m68k/meson.build b/target/m68k/meson.build
index 8d3f9ce288..4d213daaf6 100644
--- a/target/m68k/meson.build
+++ b/target/m68k/meson.build
@@ -11,9 +11,12 @@ m68k_ss.add(files(
m68k_system_ss = ss.source_set()
m68k_system_ss.add(files(
- 'm68k-semi.c',
'monitor.c'
))
+m68k_system_ss.add(when: ['CONFIG_SEMIHOSTING'],
+ if_true: files('m68k-semi.c'),
+ if_false: files('semihosting-stub.c')
+)
target_arch += {'m68k': m68k_ss}
target_system_arch += {'m68k': m68k_system_ss}
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 3/8] target/mips: Add semihosting stub
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 1/8] semihosting: Include missing 'gdbstub/syscalls.h' header Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 2/8] target/m68k: Add semihosting stub Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 4/8] target/m68k: Restrict semihosting to TCG Philippe Mathieu-Daudé
` (5 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
Since the SEMIHOSTING feature is optional, we need
a stub to link when it is disabled.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/mips/tcg/sysemu/semihosting-stub.c | 15 +++++++++++++++
target/mips/tcg/sysemu/meson.build | 6 ++++--
2 files changed, 19 insertions(+), 2 deletions(-)
create mode 100644 target/mips/tcg/sysemu/semihosting-stub.c
diff --git a/target/mips/tcg/sysemu/semihosting-stub.c b/target/mips/tcg/sysemu/semihosting-stub.c
new file mode 100644
index 0000000000..7ae27d746f
--- /dev/null
+++ b/target/mips/tcg/sysemu/semihosting-stub.c
@@ -0,0 +1,15 @@
+/*
+ * MIPS semihosting stub
+ *
+ * SPDX-FileContributor: Philippe Mathieu-Daudé <philmd@linaro.org>
+ * SPDX-FileCopyrightText: 2024 Linaro Ltd.
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "qemu/osdep.h"
+#include "internal.h"
+
+void mips_semihosting(CPUMIPSState *env)
+{
+ g_assert_not_reached();
+}
diff --git a/target/mips/tcg/sysemu/meson.build b/target/mips/tcg/sysemu/meson.build
index ec665a4b1e..911341ac37 100644
--- a/target/mips/tcg/sysemu/meson.build
+++ b/target/mips/tcg/sysemu/meson.build
@@ -1,10 +1,12 @@
mips_system_ss.add(files(
'cp0_helper.c',
- 'mips-semi.c',
'special_helper.c',
'tlb_helper.c',
))
-
+mips_system_ss.add(when: ['CONFIG_SEMIHOSTING'],
+ if_true: files('mips-semi.c'),
+ if_false: files('semihosting-stub.c')
+)
mips_system_ss.add(when: 'TARGET_MIPS64', if_true: files(
'lcsr_helper.c',
))
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 4/8] target/m68k: Restrict semihosting to TCG
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
` (2 preceding siblings ...)
2024-07-17 10:57 ` [PATCH v4 3/8] target/mips: " Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 5/8] target/mips: " Philippe Mathieu-Daudé
` (4 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
The semihosting feature depends on TCG (due to the probe_access
API access). Although TCG is the single accelerator currently
available for the m68k target, use the Kconfig "imply" directive
which is more correct (if we were to support a different accel).
Reported-by: Anton Johansson <anjo@rev.ng>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/m68k/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/m68k/Kconfig b/target/m68k/Kconfig
index 9eae71486f..23aae24ebe 100644
--- a/target/m68k/Kconfig
+++ b/target/m68k/Kconfig
@@ -1,3 +1,3 @@
config M68K
bool
- select SEMIHOSTING
+ imply SEMIHOSTING if TCG
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 5/8] target/mips: Restrict semihosting to TCG
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
` (3 preceding siblings ...)
2024-07-17 10:57 ` [PATCH v4 4/8] target/m68k: Restrict semihosting to TCG Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 6/8] target/riscv: " Philippe Mathieu-Daudé
` (3 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
Semihosting currently uses the TCG probe_access API. To prepare for
encoding the TCG dependency in Kconfig, do not enable it unless TCG
is available.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Anton Johansson <anjo@rev.ng>
---
target/mips/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/mips/Kconfig b/target/mips/Kconfig
index eb19c94c7d..876048b150 100644
--- a/target/mips/Kconfig
+++ b/target/mips/Kconfig
@@ -1,6 +1,6 @@
config MIPS
bool
- select SEMIHOSTING
+ imply SEMIHOSTING if TCG
config MIPS64
bool
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 6/8] target/riscv: Restrict semihosting to TCG
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
` (4 preceding siblings ...)
2024-07-17 10:57 ` [PATCH v4 5/8] target/mips: " Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 7/8] target/xtensa: " Philippe Mathieu-Daudé
` (2 subsequent siblings)
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
Semihosting currently uses the TCG probe_access API. To prepare for
encoding the TCG dependency in Kconfig, do not enable it unless TCG
is available.
Suggested-by: Paolo Bonzini <pbonzini@redhat.com>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Anton Johansson <anjo@rev.ng>
---
target/riscv/Kconfig | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/target/riscv/Kconfig b/target/riscv/Kconfig
index 5f30df22f2..c332616d36 100644
--- a/target/riscv/Kconfig
+++ b/target/riscv/Kconfig
@@ -1,9 +1,9 @@
config RISCV32
bool
- select ARM_COMPATIBLE_SEMIHOSTING # for do_common_semihosting()
+ imply ARM_COMPATIBLE_SEMIHOSTING if TCG
select DEVICE_TREE # needed by boot.c
config RISCV64
bool
- select ARM_COMPATIBLE_SEMIHOSTING # for do_common_semihosting()
+ imply ARM_COMPATIBLE_SEMIHOSTING if TCG
select DEVICE_TREE # needed by boot.c
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 7/8] target/xtensa: Restrict semihosting to TCG
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
` (5 preceding siblings ...)
2024-07-17 10:57 ` [PATCH v4 6/8] target/riscv: " Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 10:57 ` [PATCH v4 8/8] semihosting: Restrict " Philippe Mathieu-Daudé
2024-07-17 18:21 ` [PATCH v4 0/8] " Alex Bennée
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
The semihosting feature depends on TCG (due to the probe_access
API access). Although TCG is the single accelerator currently
available for the xtensa target, use the Kconfig "imply" directive
which is more correct (if we were to support a different accel).
Reported-by: Anton Johansson <anjo@rev.ng>
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
target/xtensa/Kconfig | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/target/xtensa/Kconfig b/target/xtensa/Kconfig
index 5e46049262..e8c2598c4d 100644
--- a/target/xtensa/Kconfig
+++ b/target/xtensa/Kconfig
@@ -1,3 +1,3 @@
config XTENSA
bool
- select SEMIHOSTING
+ imply SEMIHOSTING if TCG
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH v4 8/8] semihosting: Restrict to TCG
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
` (6 preceding siblings ...)
2024-07-17 10:57 ` [PATCH v4 7/8] target/xtensa: " Philippe Mathieu-Daudé
@ 2024-07-17 10:57 ` Philippe Mathieu-Daudé
2024-07-17 18:21 ` [PATCH v4 0/8] " Alex Bennée
8 siblings, 0 replies; 10+ messages in thread
From: Philippe Mathieu-Daudé @ 2024-07-17 10:57 UTC (permalink / raw)
To: qemu-devel
Cc: Richard Henderson, Alex Bennée, Anton Johansson, qemu-riscv,
Paolo Bonzini, Philippe Mathieu-Daudé
Semihosting currently uses the TCG probe_access API.
It is pointless to have it in the binary when TCG isn't.
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
---
semihosting/Kconfig | 1 +
1 file changed, 1 insertion(+)
diff --git a/semihosting/Kconfig b/semihosting/Kconfig
index eaf3a20ef5..fbe6ac87f9 100644
--- a/semihosting/Kconfig
+++ b/semihosting/Kconfig
@@ -1,6 +1,7 @@
config SEMIHOSTING
bool
+ depends on TCG
config ARM_COMPATIBLE_SEMIHOSTING
bool
--
2.41.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH v4 0/8] semihosting: Restrict to TCG
2024-07-17 10:57 [PATCH v4 0/8] semihosting: Restrict to TCG Philippe Mathieu-Daudé
` (7 preceding siblings ...)
2024-07-17 10:57 ` [PATCH v4 8/8] semihosting: Restrict " Philippe Mathieu-Daudé
@ 2024-07-17 18:21 ` Alex Bennée
8 siblings, 0 replies; 10+ messages in thread
From: Alex Bennée @ 2024-07-17 18:21 UTC (permalink / raw)
To: Philippe Mathieu-Daudé
Cc: qemu-devel, Richard Henderson, Anton Johansson, qemu-riscv,
Paolo Bonzini
Philippe Mathieu-Daudé <philmd@linaro.org> writes:
> v4: Address Paolo's comment
> v3: Address Anton's comment
> v2: Address Paolo's comment
>
> Semihosting currently uses the TCG probe_access API,
> so it is pointless to have it in the binary when TCG
> isn't.
>
> It could be implemented for other accelerators, but
> work need to be done. Meanwhile, do not enable it
> unless TCG is available.
Queued to semihosting/next, thanks.
<snip>
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
^ permalink raw reply [flat|nested] 10+ messages in thread