mirror of https://github.com/xemu-project/xemu.git
target/xtensa: Honour -semihosting-config userspace=on
Honour the commandline -semihosting-config userspace=on option, instead of always permitting userspace semihosting calls in system emulation mode, by passing the correct value to the is_userspace argument of semihosting_enabled(). Note that this is a behaviour change: if the user wants to do semihosting calls from userspace they must now specifically enable them on the command line. xtensa semihosting is not implemented for linux-user builds. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Acked-by: Max Filippov <jcmvbkbc@gmail.com> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20220822141230.3658237-7-peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
parent
cab9f19370
commit
870ab98bee
|
@ -2362,13 +2362,14 @@ static uint32_t test_exceptions_simcall(DisasContext *dc,
|
||||||
const OpcodeArg arg[],
|
const OpcodeArg arg[],
|
||||||
const uint32_t par[])
|
const uint32_t par[])
|
||||||
{
|
{
|
||||||
|
bool is_semi = semihosting_enabled(dc->cring != 0);
|
||||||
#ifdef CONFIG_USER_ONLY
|
#ifdef CONFIG_USER_ONLY
|
||||||
bool ill = true;
|
bool ill = true;
|
||||||
#else
|
#else
|
||||||
/* Between RE.2 and RE.3 simcall opcode's become nop for the hardware. */
|
/* Between RE.2 and RE.3 simcall opcode's become nop for the hardware. */
|
||||||
bool ill = dc->config->hw_version <= 250002 && !semihosting_enabled(false);
|
bool ill = dc->config->hw_version <= 250002 && !is_semi;
|
||||||
#endif
|
#endif
|
||||||
if (ill || !semihosting_enabled(false)) {
|
if (ill || !is_semi) {
|
||||||
qemu_log_mask(LOG_GUEST_ERROR, "SIMCALL but semihosting is disabled\n");
|
qemu_log_mask(LOG_GUEST_ERROR, "SIMCALL but semihosting is disabled\n");
|
||||||
}
|
}
|
||||||
return ill ? XTENSA_OP_ILL : 0;
|
return ill ? XTENSA_OP_ILL : 0;
|
||||||
|
@ -2378,7 +2379,7 @@ static void translate_simcall(DisasContext *dc, const OpcodeArg arg[],
|
||||||
const uint32_t par[])
|
const uint32_t par[])
|
||||||
{
|
{
|
||||||
#ifndef CONFIG_USER_ONLY
|
#ifndef CONFIG_USER_ONLY
|
||||||
if (semihosting_enabled(false)) {
|
if (semihosting_enabled(dc->cring != 0)) {
|
||||||
gen_helper_simcall(cpu_env);
|
gen_helper_simcall(cpu_env);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue