{linux,bsd}-user: Introduce get_task_state()

A CPU's TaskState is stored in the CPUState's void *opaque field,
accessing which is somewhat awkward due to having to use a cast.
Introduce a wrapper and use it everywhere.

Suggested-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Ilya Leoshkevich <iii@linux.ibm.com>
Reviewed-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240219141628.246823-3-iii@linux.ibm.com>
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Message-Id: <20240305121005.3528075-4-alex.bennee@linaro.org>
This commit is contained in:
Ilya Leoshkevich 2024-03-05 12:09:39 +00:00 committed by Alex Bennée
parent 1ea96f1ded
commit e4e5cb4a54
25 changed files with 85 additions and 75 deletions

View file

@ -214,7 +214,7 @@ static target_ulong syscall_err;
static inline uint32_t get_swi_errno(CPUState *cs)
{
#ifdef CONFIG_USER_ONLY
TaskState *ts = cs->opaque;
TaskState *ts = get_task_state(cs);
return ts->swi_errno;
#else
@ -226,7 +226,7 @@ static void common_semi_cb(CPUState *cs, uint64_t ret, int err)
{
if (err) {
#ifdef CONFIG_USER_ONLY
TaskState *ts = cs->opaque;
TaskState *ts = get_task_state(cs);
ts->swi_errno = err;
#else
syscall_err = err;
@ -586,7 +586,7 @@ void do_common_semihosting(CPUState *cs)
#if !defined(CONFIG_USER_ONLY)
const char *cmdline;
#else
TaskState *ts = cs->opaque;
TaskState *ts = get_task_state(cs);
#endif
GET_ARG(0);
GET_ARG(1);
@ -664,7 +664,7 @@ void do_common_semihosting(CPUState *cs)
target_ulong retvals[4];
int i;
#ifdef CONFIG_USER_ONLY
TaskState *ts = cs->opaque;
TaskState *ts = get_task_state(cs);
target_ulong limit;
#else
LayoutInfo info = common_semi_find_bases(cs);