The Inter-Thread Communication unit (TYPE_MIPS_ITU) is an optional device that is only selected by a few machines. However it goes deep into the translation code, as the MTC0/MTHC0 SAAR helpers call itc_reconfigure().
When building with no machine selecting the ITU component (which is implemented in hw/misc/mips_itu.c), we get the following link failure: /usr/bin/ld: target_mips_cp0_helper.c.o: in function `helper_mtc0_saar': target/mips/cp0_helper.c:1118: undefined reference to `itc_reconfigure' /usr/bin/ld: target_mips_cp0_helper.c.o: in function `helper_mthc0_saar': target/mips/cp0_helper.c:1135: undefined reference to `itc_reconfigure' Fix by adding a stub, built when the ITU isn't selected. Signed-off-by: Philippe Mathieu-Daudé <f4...@amsat.org> --- RFC because too much Meson machinery to my taste. But how to deal with such architectural devices else? To reproduce: $ echo CONFIG_JAZZ=y > default-configs/devices/mips64el-softmmu.mak $ echo CONFIG_SEMIHOSTING=y >> default-configs/devices/mips64el-softmmu.mak $ configure --without-default-devices $ ninja qemu-system-mips64el $ ./qemu-system-mips64el -M magnum -S --- target/mips/cp0_itu-stub.c | 15 +++++++++++++++ target/mips/meson.build | 3 +++ 2 files changed, 18 insertions(+) create mode 100644 target/mips/cp0_itu-stub.c diff --git a/target/mips/cp0_itu-stub.c b/target/mips/cp0_itu-stub.c new file mode 100644 index 00000000000..995b5a09ff8 --- /dev/null +++ b/target/mips/cp0_itu-stub.c @@ -0,0 +1,15 @@ +/* + * QEMU Inter-Thread Communication Unit emulation stubs + * + * Copyright (c) 2021 Philippe Mathieu-Daudé + * + * SPDX-License-Identifier: LGPL-2.1-or-later + */ +#include "qemu/osdep.h" +#include "cpu.h" +#include "hw/misc/mips_itu.h" + +void itc_reconfigure(MIPSITUState *tag) +{ + /* nothing? */ +} diff --git a/target/mips/meson.build b/target/mips/meson.build index 3b131c4a7f6..a631688fae0 100644 --- a/target/mips/meson.build +++ b/target/mips/meson.build @@ -45,6 +45,9 @@ 'cp0_helper.c', 'mips-semi.c', )) +mips_softmmu_ss.add(when: 'CONFIG_MIPS_ITU', if_false: files( + 'cp0_itu-stub.c', +)) mips_ss.add_all(when: 'CONFIG_TCG', if_true: [mips_tcg_ss]) -- 2.26.3