semihosting: Split out semihost_sys_system

Split out the non-ARM specific portions of SYS_SYSTEM to a
reusable function.

Reviewed-by: Luc Michel <lmichel@kalray.eu>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson
2022-04-29 13:57:19 -07:00
parent 25a95da0be
commit 90d8e0b09c
3 changed files with 44 additions and 11 deletions

View File

@ -507,17 +507,7 @@ void do_common_semihosting(CPUState *cs)
case TARGET_SYS_SYSTEM:
GET_ARG(0);
GET_ARG(1);
if (use_gdb_syscalls()) {
gdb_do_syscall(common_semi_cb, "system,%s", arg0, (int)arg1 + 1);
break;
}
s = lock_user_string(arg0);
if (!s) {
goto do_fault;
}
ret = system(s);
unlock_user(s, arg0, 0);
common_semi_cb(cs, ret, ret == -1 ? errno : 0);
semihost_sys_system(cs, common_semi_cb, arg0, arg1 + 1);
break;
case TARGET_SYS_ERRNO: