semihosting: Move softmmu-uaccess.h functions out of line

Rather that static (and not even inline) functions within a
header, move the functions to semihosting/uaccess.c.

Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2022-04-27 20:44:17 -07:00
parent 259739ce74
commit 0a9221810c
3 changed files with 57 additions and 37 deletions

View file

@ -42,47 +42,15 @@
#define put_user_ual(arg, p) put_user_u32(arg, p)
static void *softmmu_lock_user(CPUArchState *env, target_ulong addr,
target_ulong len, bool copy)
{
void *p = malloc(len);
if (p && copy) {
if (cpu_memory_rw_debug(env_cpu(env), addr, p, len, 0)) {
free(p);
p = NULL;
}
}
return p;
}
void *softmmu_lock_user(CPUArchState *env, target_ulong addr,
target_ulong len, bool copy);
#define lock_user(type, p, len, copy) softmmu_lock_user(env, p, len, copy)
static char *softmmu_lock_user_string(CPUArchState *env, target_ulong addr)
{
/* TODO: Make this something that isn't fixed size. */
char *s = malloc(1024);
size_t len = 0;
if (!s) {
return NULL;
}
do {
if (cpu_memory_rw_debug(env_cpu(env), addr++, s + len, 1, 0)) {
free(s);
return NULL;
}
} while (s[len++]);
return s;
}
char *softmmu_lock_user_string(CPUArchState *env, target_ulong addr);
#define lock_user_string(p) softmmu_lock_user_string(env, p)
static void softmmu_unlock_user(CPUArchState *env, void *p, target_ulong addr,
target_ulong len)
{
if (len) {
cpu_memory_rw_debug(env_cpu(env), addr, p, len, 1);
}
free(p);
}
void softmmu_unlock_user(CPUArchState *env, void *p,
target_ulong addr, target_ulong len);
#define unlock_user(s, args, len) softmmu_unlock_user(env, s, args, len)
#endif /* SEMIHOSTING_SOFTMMU_UACCESS_H */