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 uint32_t par[])
|
||||
{
|
||||
bool is_semi = semihosting_enabled(dc->cring != 0);
|
||||
#ifdef CONFIG_USER_ONLY
|
||||
bool ill = true;
|
||||
#else
|
||||
/* 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
|
||||
if (ill || !semihosting_enabled(false)) {
|
||||
if (ill || !is_semi) {
|
||||
qemu_log_mask(LOG_GUEST_ERROR, "SIMCALL but semihosting is disabled\n");
|
||||
}
|
||||
return ill ? XTENSA_OP_ILL : 0;
|
||||
|
@ -2378,7 +2379,7 @@ static void translate_simcall(DisasContext *dc, const OpcodeArg arg[],
|
|||
const uint32_t par[])
|
||||
{
|
||||
#ifndef CONFIG_USER_ONLY
|
||||
if (semihosting_enabled(false)) {
|
||||
if (semihosting_enabled(dc->cring != 0)) {
|
||||
gen_helper_simcall(cpu_env);
|
||||
}
|
||||
#endif
|
||||
|
|
Loading…
Reference in New Issue