target/riscv/cpu_helper: Fix linking problem with semihosting disabled
If QEMU has been configured with "--without-default-devices", the build is currently failing with: /usr/bin/ld: libqemu-riscv32-softmmu.a.p/target_riscv_cpu_helper.c.o: in function `riscv_cpu_do_interrupt': .../qemu/target/riscv/cpu_helper.c:1678:(.text+0x2214): undefined reference to `do_common_semihosting' We always want semihosting to be enabled if TCG is available, so change the "imply" statements in the Kconfig file to "select", and make sure to avoid calling into do_common_semihosting() if TCG is not available. Signed-off-by: Thomas Huth <thuth@redhat.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-ID: <20240906094858.718105-1-thuth@redhat.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
b27402813e
commit
177060d860
@ -1,9 +1,9 @@
|
||||
config RISCV32
|
||||
bool
|
||||
imply ARM_COMPATIBLE_SEMIHOSTING if TCG
|
||||
select ARM_COMPATIBLE_SEMIHOSTING if TCG
|
||||
select DEVICE_TREE # needed by boot.c
|
||||
|
||||
config RISCV64
|
||||
bool
|
||||
imply ARM_COMPATIBLE_SEMIHOSTING if TCG
|
||||
select ARM_COMPATIBLE_SEMIHOSTING if TCG
|
||||
select DEVICE_TREE # needed by boot.c
|
||||
|
@ -1674,10 +1674,12 @@ void riscv_cpu_do_interrupt(CPUState *cs)
|
||||
if (!async) {
|
||||
/* set tval to badaddr for traps with address information */
|
||||
switch (cause) {
|
||||
#ifdef CONFIG_TCG
|
||||
case RISCV_EXCP_SEMIHOST:
|
||||
do_common_semihosting(cs);
|
||||
env->pc += 4;
|
||||
return;
|
||||
#endif
|
||||
case RISCV_EXCP_LOAD_GUEST_ACCESS_FAULT:
|
||||
case RISCV_EXCP_STORE_GUEST_AMO_ACCESS_FAULT:
|
||||
case RISCV_EXCP_LOAD_ADDR_MIS:
|
||||
|
Loading…
Reference in New Issue
Block a user