From: "Alex Bennée" <alex.bennee@linaro.org>
To: peter.maydell@linaro.org
Cc: "Marek Vasut" <marex@denx.de>,
"Aleksandar Rikalo" <arikalo@wavecomp.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Chris Wulff" <crwulff@gmail.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
qemu-devel@nongnu.org, "Max Filippov" <jcmvbkbc@gmail.com>,
"Aleksandar Markovic" <amarkovic@wavecomp.com>,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Philippe Mathieu-Daudé" <philmd@redhat.com>,
"Aurelien Jarno" <aurelien@aurel32.net>
Subject: [Qemu-devel] [PULL 02/28] semihosting: introduce CONFIG_SEMIHOSTING
Date: Tue, 28 May 2019 10:49:27 +0100 [thread overview]
Message-ID: <20190528094953.14898-3-alex.bennee@linaro.org> (raw)
In-Reply-To: <20190528094953.14898-1-alex.bennee@linaro.org>
There isn't much point building semihosting for platforms that don't
support it. Introduce a new symbol and enable it only for the softmmu
targets that need it.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Tested-by: Philippe Mathieu-Daudé <philmd@redhat.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
diff --git a/default-configs/arm-softmmu.mak b/default-configs/arm-softmmu.mak
index f23ecfd5c58..1f2e0e7fdeb 100644
--- a/default-configs/arm-softmmu.mak
+++ b/default-configs/arm-softmmu.mak
@@ -39,3 +39,4 @@ CONFIG_MICROBIT=y
CONFIG_FSL_IMX25=y
CONFIG_FSL_IMX7=y
CONFIG_FSL_IMX6UL=y
+CONFIG_SEMIHOSTING=y
diff --git a/default-configs/lm32-softmmu.mak b/default-configs/lm32-softmmu.mak
index 6d259665d60..115b3e34c98 100644
--- a/default-configs/lm32-softmmu.mak
+++ b/default-configs/lm32-softmmu.mak
@@ -4,6 +4,8 @@
#
#CONFIG_MILKYMIST_TMU2=n # disabling it actually causes compile-time failures
+CONFIG_SEMIHOSTING=y
+
# Boards:
#
CONFIG_LM32=y
diff --git a/default-configs/m68k-softmmu.mak b/default-configs/m68k-softmmu.mak
index e17495e2a0b..4049a8f2ba9 100644
--- a/default-configs/m68k-softmmu.mak
+++ b/default-configs/m68k-softmmu.mak
@@ -1,5 +1,7 @@
# Default configuration for m68k-softmmu
+CONFIG_SEMIHOSTING=y
+
# Boards:
#
CONFIG_AN5206=y
diff --git a/default-configs/mips-softmmu-common.mak b/default-configs/mips-softmmu-common.mak
index 8e54a74b7a5..e10ac4b20c0 100644
--- a/default-configs/mips-softmmu-common.mak
+++ b/default-configs/mips-softmmu-common.mak
@@ -35,6 +35,7 @@ CONFIG_MIPS_CPS=y
CONFIG_MIPS_ITU=y
CONFIG_R4K=y
CONFIG_MALTA=y
+CONFIG_SEMIHOSTING=y
CONFIG_PCNET_PCI=y
CONFIG_MIPSSIM=y
CONFIG_ACPI_SMBUS=y
diff --git a/default-configs/nios2-softmmu.mak b/default-configs/nios2-softmmu.mak
index e130d024e62..1bc4082ea99 100644
--- a/default-configs/nios2-softmmu.mak
+++ b/default-configs/nios2-softmmu.mak
@@ -1,5 +1,7 @@
# Default configuration for nios2-softmmu
+CONFIG_SEMIHOSTING=y
+
# Boards:
#
CONFIG_NIOS2_10M50=y
diff --git a/default-configs/xtensa-softmmu.mak b/default-configs/xtensa-softmmu.mak
index 7e4d1cc0979..3aa20a47a7f 100644
--- a/default-configs/xtensa-softmmu.mak
+++ b/default-configs/xtensa-softmmu.mak
@@ -1,5 +1,7 @@
# Default configuration for Xtensa
+CONFIG_SEMIHOSTING=y
+
# Boards:
#
CONFIG_XTENSA_SIM=y
diff --git a/hw/Kconfig b/hw/Kconfig
index 88b9f150070..195f541e50c 100644
--- a/hw/Kconfig
+++ b/hw/Kconfig
@@ -29,6 +29,7 @@ source pci/Kconfig
source rdma/Kconfig
source scsi/Kconfig
source sd/Kconfig
+source semihosting/Kconfig
source smbios/Kconfig
source ssi/Kconfig
source timer/Kconfig
diff --git a/hw/semihosting/Kconfig b/hw/semihosting/Kconfig
new file mode 100644
index 00000000000..efe0a30734c
--- /dev/null
+++ b/hw/semihosting/Kconfig
@@ -0,0 +1,3 @@
+
+config SEMIHOSTING
+ bool
diff --git a/hw/semihosting/Makefile.objs b/hw/semihosting/Makefile.objs
index 546954f4ff4..09c19bf19ed 100644
--- a/hw/semihosting/Makefile.objs
+++ b/hw/semihosting/Makefile.objs
@@ -1 +1 @@
-common-obj-$(CONFIG_SOFTMMU) += config.o
+obj-$(CONFIG_SEMIHOSTING) += config.o
diff --git a/stubs/Makefile.objs b/stubs/Makefile.objs
index 73452ad2657..9c7393b08c8 100644
--- a/stubs/Makefile.objs
+++ b/stubs/Makefile.objs
@@ -40,3 +40,4 @@ stub-obj-y += pci-host-piix.o
stub-obj-y += ram-block.o
stub-obj-y += ramfb.o
stub-obj-y += fw_cfg.o
+stub-obj-$(CONFIG_SOFTMMU) += semihost.o
diff --git a/stubs/semihost.c b/stubs/semihost.c
new file mode 100644
index 00000000000..1a4e88e5326
--- /dev/null
+++ b/stubs/semihost.c
@@ -0,0 +1,66 @@
+/*
+ * Semihosting Stubs for SoftMMU
+ *
+ * Copyright (c) 2019 Linaro Ltd
+ *
+ * Stubs for SoftMMU targets that don't actually do semihosting.
+ *
+ * SPDX-License-Identifier: GPL-2.0-or-later
+ */
+
+#include "qemu/osdep.h"
+#include "qemu/option.h"
+#include "qemu/error-report.h"
+#include "hw/semihosting/semihost.h"
+
+/* Empty config */
+QemuOptsList qemu_semihosting_config_opts = {
+ .name = "",
+ .head = QTAILQ_HEAD_INITIALIZER(qemu_semihosting_config_opts.head),
+ .desc = {
+ { /* end of list */ }
+ },
+};
+
+/* Queries to config status default to off */
+bool semihosting_enabled(void)
+{
+ return false;
+}
+
+SemihostingTarget semihosting_get_target(void)
+{
+ return SEMIHOSTING_TARGET_AUTO;
+}
+
+/*
+ * All the rest are empty subs. We could g_assert_not_reached() but
+ * that adds extra weight to the final binary. Waste not want not.
+ */
+void qemu_semihosting_enable(void)
+{
+}
+
+int qemu_semihosting_config_options(const char *optarg)
+{
+ return 1;
+}
+
+const char *semihosting_get_arg(int i)
+{
+ return NULL;
+}
+
+int semihosting_get_argc(void)
+{
+ return 0;
+}
+
+const char *semihosting_get_cmdline(void)
+{
+ return NULL;
+}
+
+void semihosting_arg_fallback(const char *file, const char *cmd)
+{
+}
--
2.20.1
next prev parent reply other threads:[~2019-05-28 9:51 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-28 9:49 [Qemu-devel] [PULL 00/28] testing/next (system tests, docker, iotests) Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 01/28] semihosting: move semihosting configuration into its own directory Alex Bennée
2019-05-28 9:49 ` Alex Bennée [this message]
2019-05-28 9:49 ` [Qemu-devel] [PULL 03/28] semihosting: implement a semihosting console Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 04/28] semihosting: enable chardev backed output for console Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 05/28] target/arm: fixup some of the commentary for arm-semi Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 06/28] target/arm: use the common interface for WRITE0/WRITEC in arm-semi Alex Bennée
2019-05-30 11:34 ` Peter Maydell
2019-05-30 12:35 ` Alex Bennée
2019-05-30 12:36 ` Peter Maydell
2019-05-28 9:49 ` [Qemu-devel] [PULL 07/28] target/arm: add LOG_UNIMP messages to arm-semi Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 08/28] target/arm: correct return values for WRITE/READ in arm-semi Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 09/28] target/mips: only build mips-semi for softmmu Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 10/28] target/mips: convert UHI_plog to use common semihosting code Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 11/28] MAINTAINERS: update for semihostings new home Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 12/28] tests/docker: add ubuntu 18.04 Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 13/28] tests/docker: Test more components on the Fedora default image Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 14/28] tests/tcg/multiarch: add support for multiarch system tests Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 15/28] tests/tcg/multiarch: add hello world system test Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 16/28] editorconfig: add settings for .s/.S files Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 17/28] tests/tcg/aarch64: add system boot.S Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 18/28] tests/tcg/multiarch: move the system memory test Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 19/28] tests/tcg/minilib: support %c format char Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 20/28] tests/tcg/multiarch: expand system memory test to cover more Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 21/28] tests/tcg/alpha: add system boot.S Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 22/28] .travis.yml: enable aarch64-softmmu and alpha-softmmu tcg tests Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 23/28] Makefile: fix coverage-report reference to BUILD_DIR Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 24/28] Makefile: include per-target build directories in coverage report Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 25/28] Makefile.target: support per-target coverage reports Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 26/28] tests/qemu-iotests/group: Re-use the "auto" group for tests that can always run Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 27/28] tests/qemu-iotests: re-format output to for make check-block Alex Bennée
2019-05-28 9:49 ` [Qemu-devel] [PULL 28/28] tests: Run the iotests during "make check" again Alex Bennée
2019-05-28 13:24 ` [Qemu-devel] [PULL 00/28] testing/next (system tests, docker, iotests) Peter Maydell
2019-05-28 13:47 ` Alex Bennée
2019-05-28 14:02 ` Peter Maydell
2019-05-28 15:09 ` Alex Bennée
2019-05-30 15:14 ` Paolo Bonzini
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190528094953.14898-3-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=amarkovic@wavecomp.com \
--cc=arikalo@wavecomp.com \
--cc=aurelien@aurel32.net \
--cc=crwulff@gmail.com \
--cc=jcmvbkbc@gmail.com \
--cc=marex@denx.de \
--cc=pbonzini@redhat.com \
--cc=peter.maydell@linaro.org \
--cc=philmd@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).