semihosting: introduce CONFIG_SEMIHOSTING

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>
This commit is contained in:
Alex Bennée 2019-05-13 15:25:27 +01:00
parent f1672e6f2b
commit 16932bb761
11 changed files with 82 additions and 1 deletions

View File

@ -39,3 +39,4 @@ CONFIG_MICROBIT=y
CONFIG_FSL_IMX25=y
CONFIG_FSL_IMX7=y
CONFIG_FSL_IMX6UL=y
CONFIG_SEMIHOSTING=y

View File

@ -4,6 +4,8 @@
#
#CONFIG_MILKYMIST_TMU2=n # disabling it actually causes compile-time failures
CONFIG_SEMIHOSTING=y
# Boards:
#
CONFIG_LM32=y

View File

@ -1,5 +1,7 @@
# Default configuration for m68k-softmmu
CONFIG_SEMIHOSTING=y
# Boards:
#
CONFIG_AN5206=y

View File

@ -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

View File

@ -1,5 +1,7 @@
# Default configuration for nios2-softmmu
CONFIG_SEMIHOSTING=y
# Boards:
#
CONFIG_NIOS2_10M50=y

View File

@ -1,5 +1,7 @@
# Default configuration for Xtensa
CONFIG_SEMIHOSTING=y
# Boards:
#
CONFIG_XTENSA_SIM=y

View File

@ -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

3
hw/semihosting/Kconfig Normal file
View File

@ -0,0 +1,3 @@
config SEMIHOSTING
bool

View File

@ -1 +1 @@
common-obj-$(CONFIG_SOFTMMU) += config.o
obj-$(CONFIG_SEMIHOSTING) += config.o

View File

@ -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

66
stubs/semihost.c Normal file
View File

@ -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)
{
}