diff mbox series

[3/7] target/m68k: Honour -semihosting-config userspace=on

Message ID 20220815190303.2061559-4-peter.maydell@linaro.org (mailing list archive)
State New, archived
Headers show
Series Allow semihosting from user mode | expand

Commit Message

Peter Maydell Aug. 15, 2022, 7:02 p.m. UTC
Honour the commandline -semihosting-config userspace=on option,
instead of never permitting userspace semihosting calls in system
emulation mode, by passing the correct value to the is_userspace
argument of semihosting_enabled(), instead of manually checking and
always forbidding semihosting if the guest is in userspace.

(Note that target/m68k doesn't support semihosting at all
in the linux-user build.)

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
---
 target/m68k/op_helper.c | 3 +--
 1 file changed, 1 insertion(+), 2 deletions(-)

Comments

Laurent Vivier Aug. 16, 2022, 10:55 a.m. UTC | #1
Le 15/08/2022 à 21:02, Peter Maydell a écrit :
> Honour the commandline -semihosting-config userspace=on option,
> instead of never permitting userspace semihosting calls in system
> emulation mode, by passing the correct value to the is_userspace
> argument of semihosting_enabled(), instead of manually checking and
> always forbidding semihosting if the guest is in userspace.
> 
> (Note that target/m68k doesn't support semihosting at all
> in the linux-user build.)
> 
> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
> ---
>   target/m68k/op_helper.c | 3 +--
>   1 file changed, 1 insertion(+), 2 deletions(-)
> 
> diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
> index 4b3dfec1306..a96a0340506 100644
> --- a/target/m68k/op_helper.c
> +++ b/target/m68k/op_helper.c
> @@ -203,8 +203,7 @@ static void cf_interrupt_all(CPUM68KState *env, int is_hw)
>               cf_rte(env);
>               return;
>           case EXCP_HALT_INSN:
> -            if (semihosting_enabled(false)
> -                    && (env->sr & SR_S) != 0
> +            if (semihosting_enabled((env->sr & SR_S) == 0)
>                       && (env->pc & 3) == 0
>                       && cpu_lduw_code(env, env->pc - 4) == 0x4e71
>                       && cpu_ldl_code(env, env->pc) == 0x4e7bf000) {

Reviewed-by: Laurent Vivier <laurent@vivier.eu>
diff mbox series

Patch

diff --git a/target/m68k/op_helper.c b/target/m68k/op_helper.c
index 4b3dfec1306..a96a0340506 100644
--- a/target/m68k/op_helper.c
+++ b/target/m68k/op_helper.c
@@ -203,8 +203,7 @@  static void cf_interrupt_all(CPUM68KState *env, int is_hw)
             cf_rte(env);
             return;
         case EXCP_HALT_INSN:
-            if (semihosting_enabled(false)
-                    && (env->sr & SR_S) != 0
+            if (semihosting_enabled((env->sr & SR_S) == 0)
                     && (env->pc & 3) == 0
                     && cpu_lduw_code(env, env->pc - 4) == 0x4e71
                     && cpu_ldl_code(env, env->pc) == 0x4e7bf000) {