On MIPS, the semihosting feature is always required on user-space.
Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com>
---
default-configs/mips-linux-user-common.mak | 4 ++++
default-configs/mips-linux-user.mak | 2 ++
default-configs/mips64-linux-user.mak | 2 ++
default-configs/mips64el-linux-user.mak | 2 ++
default-configs/mipsel-linux-user.mak | 2 ++
default-configs/mipsn32-linux-user.mak | 2 ++
default-configs/mipsn32el-linux-user.mak | 2 ++
7 files changed, 16 insertions(+)
create mode 100644 default-configs/mips-linux-user-common.mak
diff --git a/default-configs/mips-linux-user-common.mak b/default-configs/mips-linux-user-common.mak
new file mode 100644
index 0000000000..04947706e8
--- /dev/null
+++ b/default-configs/mips-linux-user-common.mak
@@ -0,0 +1,4 @@
+# Common mips*-linux-user CONFIG defines
+
+# CONFIG_SEMIHOSTING is always required on this architecture
+CONFIG_SEMIHOSTING=y
diff --git a/default-configs/mips-linux-user.mak b/default-configs/mips-linux-user.mak
index 31df57021e..c606e12444 100644
--- a/default-configs/mips-linux-user.mak
+++ b/default-configs/mips-linux-user.mak
@@ -1 +1,3 @@
# Default configuration for mips-linux-user
+
+include mips-linux-user-common.mak
diff --git a/default-configs/mips64-linux-user.mak b/default-configs/mips64-linux-user.mak
index 1598bfcf7d..81e16ac2eb 100644
--- a/default-configs/mips64-linux-user.mak
+++ b/default-configs/mips64-linux-user.mak
@@ -1 +1,3 @@
# Default configuration for mips64-linux-user
+
+include mips-linux-user-common.mak
diff --git a/default-configs/mips64el-linux-user.mak b/default-configs/mips64el-linux-user.mak
index 629f084086..6399af3fd5 100644
--- a/default-configs/mips64el-linux-user.mak
+++ b/default-configs/mips64el-linux-user.mak
@@ -1 +1,3 @@
# Default configuration for mips64el-linux-user
+
+include mips-linux-user-common.mak
diff --git a/default-configs/mipsel-linux-user.mak b/default-configs/mipsel-linux-user.mak
index 4d0e4afb69..4a27d30b45 100644
--- a/default-configs/mipsel-linux-user.mak
+++ b/default-configs/mipsel-linux-user.mak
@@ -1 +1,3 @@
# Default configuration for mipsel-linux-user
+
+include mips-linux-user-common.mak
diff --git a/default-configs/mipsn32-linux-user.mak b/default-configs/mipsn32-linux-user.mak
index 5b97919794..f3ac967463 100644
--- a/default-configs/mipsn32-linux-user.mak
+++ b/default-configs/mipsn32-linux-user.mak
@@ -1 +1,3 @@
# Default configuration for mipsn32-linux-user
+
+include mips-linux-user-common.mak
diff --git a/default-configs/mipsn32el-linux-user.mak b/default-configs/mipsn32el-linux-user.mak
index d6367ff987..63fe4de4fd 100644
--- a/default-configs/mipsn32el-linux-user.mak
+++ b/default-configs/mipsn32el-linux-user.mak
@@ -1 +1,3 @@
# Default configuration for mipsn32el-linux-user
+
+include mips-linux-user-common.mak
--
2.21.1
On 3/16/20 5:00 AM, Philippe Mathieu-Daudé wrote: > On MIPS, the semihosting feature is always required on user-space. > > Signed-off-by: Philippe Mathieu-Daudé <philmd@redhat.com> > --- > default-configs/mips-linux-user-common.mak | 4 ++++ > default-configs/mips-linux-user.mak | 2 ++ > default-configs/mips64-linux-user.mak | 2 ++ > default-configs/mips64el-linux-user.mak | 2 ++ > default-configs/mipsel-linux-user.mak | 2 ++ > default-configs/mipsn32-linux-user.mak | 2 ++ > default-configs/mipsn32el-linux-user.mak | 2 ++ > 7 files changed, 16 insertions(+) > create mode 100644 default-configs/mips-linux-user-common.mak Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On 16/03/20 13:00, Philippe Mathieu-Daudé wrote: > diff --git a/default-configs/mips-linux-user-common.mak b/default-configs/mips-linux-user-common.mak > new file mode 100644 > index 0000000000..04947706e8 > --- /dev/null > +++ b/default-configs/mips-linux-user-common.mak > @@ -0,0 +1,4 @@ > +# Common mips*-linux-user CONFIG defines > + > +# CONFIG_SEMIHOSTING is always required on this architecture > +CONFIG_SEMIHOSTING=y If it is always required, it should be select-ed. Same for patch 10. Paolo
Hi Paolo,
TLDR "how can I select a arch-specific feature?"
On 3/18/20 11:31 AM, Paolo Bonzini wrote:
> On 16/03/20 13:00, Philippe Mathieu-Daudé wrote:
>> diff --git a/default-configs/mips-linux-user-common.mak b/default-configs/mips-linux-user-common.mak
>> new file mode 100644
>> index 0000000000..04947706e8
>> --- /dev/null
>> +++ b/default-configs/mips-linux-user-common.mak
>> @@ -0,0 +1,4 @@
>> +# Common mips*-linux-user CONFIG defines
>> +
>> +# CONFIG_SEMIHOSTING is always required on this architecture
>> +CONFIG_SEMIHOSTING=y
>
> If it is always required, it should be select-ed.
I'm not sure how to do that...
Currently we have in hw/semihosting/Kconfig:
config SEMIHOSTING
bool
depends on TCG
default n
The only per-target generic entry point is minikconf command line.
1/ The less ugly option might be to add an optional target-devices.mak:
-- >8 --
diff --git a/Makefile.target b/Makefile.target
--- a/Makefile.target
+++ b/Makefile.target
@@ -5,6 +5,7 @@ BUILD_DIR?=$(CURDIR)/..
include ../config-host.mak
include config-target.mak
include $(SRC_PATH)/rules.mak
+-include $(SRC_PATH)/target/$(TARGET_BASE_ARCH)/target-devices.mak
ifdef CONFIG_SOFTMMU
include config-devices.mak
diff --git a/target/arm/target-devices.mak b/target/arm/target-devices.mak
new file mode 100644
--- /dev/null
+++ b/target/arm/target-devices.mak
@@ -0,0 +1 @@
+CONFIG_SEMIHOSTING=y
---
2/ I can have ./configure adding in config-devices.mak:
-- >8 --
@@ -7778,6 +7778,7 @@ echo "# Automatically generated by configure - do
not modify" > $config_target_m
bflt="no"
mttcg="no"
+target_require_semihosting="no"
interp_prefix1=$(echo "$interp_prefix" | sed "s/%M/$target_name/g")
gdb_xml_files=""
@@ -7806,6 +7807,7 @@ case "$target_name" in
TARGET_SYSTBL_ABI=common,oabi
bflt="yes"
mttcg="yes"
+ target_require_semihosting="yes"
gdb_xml_files="arm-core.xml arm-vfp.xml arm-vfp3.xml arm-neon.xml"
;;
aarch64|aarch64_be)
@@ -7813,6 +7815,7 @@ case "$target_name" in
TARGET_BASE_ARCH=arm
bflt="yes"
mttcg="yes"
+ target_require_semihosting="yes"
gdb_xml_files="aarch64-core.xml aarch64-fpu.xml arm-core.xml
arm-vfp.xml arm-vfp3.xml arm-neon.xml"
;;
cris)
@@ -8031,7 +8034,10 @@ fi
if test "$target_bsd_user" = "yes" ; then
echo "CONFIG_BSD_USER=y" >> $config_target_mak
fi
+if test "$target_require_semihosting" = "yes" ; then
+ echo "$target/config-devices.mak: CONFIG_SEMIHOSTING=y" >>
$config_host_mak
+fi
---
3/ Or force MINIKCONF_ARGS:
---
if test "$target_require_semihosting" = "yes" ; then
echo "MINIKCONF_ARGS += CONFIG_SEMIHOSTING=y" >> $config_target_mak
fi
---
Also note for ARM all configs require it, but for MIPS we only want it
for user-mode.
With 1/ this can be done as:
-- >8 --
diff --git a/target/mips/target-devices.mak b/target/mips/target-devices.mak
new file mode 100644
--- /dev/null
+++ b/target/mips/target-devices.mak
@@ -0,0 +1,3 @@
+ifndef CONFIG_SOFTMMU
+CONFIG_SEMIHOSTING=y
+endif
---
>
> Same for patch 10.
>
> Paolo
>
© 2016 - 2026 Red Hat, Inc.