[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 3/3] user-mode: Rename CPUState::opaque as CPUState::task_state
From: |
Philippe Mathieu-Daudé |
Subject: |
[PATCH 3/3] user-mode: Rename CPUState::opaque as CPUState::task_state |
Date: |
Thu, 4 Mar 2021 16:26:07 +0100 |
While the CPUState 'opaque' field sounds generic, it is meant
for user-mode emulation. Rename it as 'task_state' (the "task"
concept is only meaningful in user-mode) to clarify this field
use. Remove various cast while renaming.
Signed-off-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
---
include/hw/core/cpu.h | 4 ++--
linux-user/m68k/target_cpu.h | 3 +--
linux-user/qemu.h | 2 +-
bsd-user/main.c | 2 +-
gdbstub.c | 13 ++++------
hw/semihosting/arm-compat-semi.c | 12 ++++------
linux-user/aarch64/cpu_loop.c | 2 +-
linux-user/arm/cpu_loop.c | 4 ++--
linux-user/arm/signal.c | 2 +-
linux-user/cris/cpu_loop.c | 3 +--
linux-user/elfload.c | 8 +++----
linux-user/hppa/signal.c | 3 +--
linux-user/linuxload.c | 2 +-
linux-user/m68k/cpu_loop.c | 2 +-
linux-user/main.c | 2 +-
linux-user/mips/cpu_loop.c | 3 +--
linux-user/ppc/signal.c | 7 +++---
linux-user/riscv/cpu_loop.c | 3 +--
linux-user/signal.c | 34 ++++++++++++--------------
linux-user/syscall.c | 41 +++++++++++++-------------------
linux-user/vm86.c | 19 +++++++--------
target/m68k/m68k-semi.c | 2 +-
22 files changed, 73 insertions(+), 100 deletions(-)
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index f4d2169cc8e..c373618f2e9 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -313,7 +313,7 @@ typedef struct TaskState TaskState;
* @gdb_num_regs: Number of total registers accessible to GDB.
* @gdb_num_g_regs: Number of registers in GDB 'g' packets.
* @next_cpu: Next CPU sharing TB cache.
- * @opaque: User task data.
+ * @task_state: User task data.
* @mem_io_pc: Host Program Counter at which the memory was accessed.
* @kvm_fd: vCPU file descriptor for KVM.
* @work_mutex: Lock to prevent multiple access to @work_list.
@@ -389,7 +389,7 @@ struct CPUState {
QTAILQ_HEAD(, CPUWatchpoint) watchpoints;
CPUWatchpoint *watchpoint_hit;
- TaskState *opaque;
+ TaskState *task_state;
/* In order to avoid passing too many arguments to the MMIO helpers,
* we store some rarely used information in the CPU context.
diff --git a/linux-user/m68k/target_cpu.h b/linux-user/m68k/target_cpu.h
index c3f288dfe83..bb252f90ba7 100644
--- a/linux-user/m68k/target_cpu.h
+++ b/linux-user/m68k/target_cpu.h
@@ -37,9 +37,8 @@ static inline void cpu_clone_regs_parent(CPUM68KState *env,
unsigned flags)
static inline void cpu_set_tls(CPUM68KState *env, target_ulong newtls)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
- ts->tp_value = newtls;
+ cs->task_state->tp_value = newtls;
}
static inline abi_ulong get_sp_from_cpustate(CPUM68KState *state)
diff --git a/linux-user/qemu.h b/linux-user/qemu.h
index 5394f726892..59949676c6a 100644
--- a/linux-user/qemu.h
+++ b/linux-user/qemu.h
@@ -381,7 +381,7 @@ extern long safe_syscall_base(int *pending, long number,
...);
#define safe_syscall(...) \
({ \
long ret_; \
- int *psp_ = &((TaskState *)thread_cpu->opaque)->signal_pending; \
+ int *psp_ = &thread_cpu->task_state->signal_pending; \
ret_ = safe_syscall_base(psp_, __VA_ARGS__); \
if (is_error(ret_)) { \
errno = -ret_; \
diff --git a/bsd-user/main.c b/bsd-user/main.c
index 798aba512c1..625d440ab31 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -1000,7 +1000,7 @@ int main(int argc, char **argv)
memset(ts, 0, sizeof(TaskState));
init_task_state(ts);
ts->info = info;
- cpu->opaque = ts;
+ cpu->task_state = ts;
#if defined(TARGET_I386)
env->cr[0] = CR0_PG_MASK | CR0_WP_MASK | CR0_PE_MASK;
diff --git a/gdbstub.c b/gdbstub.c
index 3ee40479b69..406241ee3fa 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -94,8 +94,7 @@ static inline int target_memory_rw_debug(CPUState *cpu,
target_ulong addr,
static inline int cpu_gdb_index(CPUState *cpu)
{
#if defined(CONFIG_USER_ONLY)
- TaskState *ts = (TaskState *) cpu->opaque;
- return ts->ts_tid;
+ return cpu->task_state->ts_tid;
#else
return cpu->cpu_index + 1;
#endif
@@ -2121,7 +2120,7 @@ static void handle_query_offsets(GdbCmdContext *gdb_ctx,
void *user_ctx)
{
TaskState *ts;
- ts = gdbserver_state.c_cpu->opaque;
+ ts = gdbserver_state.c_cpu->task_state;
g_string_printf(gdbserver_state.str_buf,
"Text=" TARGET_ABI_FMT_lx
";Data=" TARGET_ABI_FMT_lx
@@ -2174,7 +2173,7 @@ static void handle_query_supported(GdbCmdContext
*gdb_ctx, void *user_ctx)
}
#ifdef CONFIG_USER_ONLY
- if (gdbserver_state.c_cpu->opaque) {
+ if (gdbserver_state.c_cpu->task_state) {
g_string_append(gdbserver_state.str_buf, ";qXfer:auxv:read+");
}
#endif
@@ -2243,7 +2242,6 @@ static void handle_query_xfer_features(GdbCmdContext
*gdb_ctx, void *user_ctx)
#if defined(CONFIG_USER_ONLY) && defined(CONFIG_LINUX_USER)
static void handle_query_xfer_auxv(GdbCmdContext *gdb_ctx, void *user_ctx)
{
- TaskState *ts;
unsigned long offset, len, saved_auxv, auxv_len;
if (gdb_ctx->num_params < 2) {
@@ -2253,9 +2251,8 @@ static void handle_query_xfer_auxv(GdbCmdContext
*gdb_ctx, void *user_ctx)
offset = gdb_ctx->params[0].val_ul;
len = gdb_ctx->params[1].val_ul;
- ts = gdbserver_state.c_cpu->opaque;
- saved_auxv = ts->info->saved_auxv;
- auxv_len = ts->info->auxv_len;
+ saved_auxv = gdbserver_state.c_cpu->task_state->info->saved_auxv;
+ auxv_len = gdbserver_state.c_cpu->task_state->info->auxv_len;
if (offset >= auxv_len) {
put_packet("E00");
diff --git a/hw/semihosting/arm-compat-semi.c b/hw/semihosting/arm-compat-semi.c
index 23c6e3edcb6..5e5724d18fb 100644
--- a/hw/semihosting/arm-compat-semi.c
+++ b/hw/semihosting/arm-compat-semi.c
@@ -375,9 +375,7 @@ static inline uint32_t set_swi_errno(CPUState *cs, uint32_t
code)
{
if (code == (uint32_t)-1) {
#ifdef CONFIG_USER_ONLY
- TaskState *ts = cs->opaque;
-
- ts->swi_errno = errno;
+ cs->task_state->swi_errno = errno;
#else
syscall_err = errno;
#endif
@@ -388,9 +386,7 @@ static inline uint32_t set_swi_errno(CPUState *cs, uint32_t
code)
static inline uint32_t get_swi_errno(CPUState *cs)
{
#ifdef CONFIG_USER_ONLY
- TaskState *ts = cs->opaque;
-
- return ts->swi_errno;
+ return cs->task_state->swi_errno;
#else
return syscall_err;
#endif
@@ -1107,7 +1103,7 @@ target_ulong do_common_semihosting(CPUState *cs)
#if !defined(CONFIG_USER_ONLY)
const char *cmdline;
#else
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
#endif
GET_ARG(0);
GET_ARG(1);
@@ -1188,7 +1184,7 @@ target_ulong do_common_semihosting(CPUState *cs)
target_ulong limit;
int i;
#ifdef CONFIG_USER_ONLY
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
#else
target_ulong rambase = common_semi_rambase(cs);
#endif
diff --git a/linux-user/aarch64/cpu_loop.c b/linux-user/aarch64/cpu_loop.c
index 7c42f657068..e8e2f17b34b 100644
--- a/linux-user/aarch64/cpu_loop.c
+++ b/linux-user/aarch64/cpu_loop.c
@@ -187,7 +187,7 @@ void target_cpu_copy_regs(CPUArchState *env, struct
target_pt_regs *regs)
{
ARMCPU *cpu = env_archcpu(env);
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
struct image_info *info = ts->info;
int i;
diff --git a/linux-user/arm/cpu_loop.c b/linux-user/arm/cpu_loop.c
index cadfb7fa439..a1c1d7e20eb 100644
--- a/linux-user/arm/cpu_loop.c
+++ b/linux-user/arm/cpu_loop.c
@@ -244,7 +244,7 @@ void cpu_loop(CPUARMState *env)
case EXCP_NOCP:
case EXCP_INVSTATE:
{
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
uint32_t opcode;
int rc;
@@ -470,7 +470,7 @@ void cpu_loop(CPUARMState *env)
void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
{
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
struct image_info *info = ts->info;
int i;
diff --git a/linux-user/arm/signal.c b/linux-user/arm/signal.c
index f21d1535e4d..fe20add8029 100644
--- a/linux-user/arm/signal.c
+++ b/linux-user/arm/signal.c
@@ -214,7 +214,7 @@ setup_return(CPUARMState *env, struct target_sigaction *ka,
abi_ulong retcode;
int thumb;
- int is_fdpic = info_is_fdpic(((TaskState *)thread_cpu->opaque)->info);
+ int is_fdpic = info_is_fdpic(thread_cpu->task_state->info);
if (is_fdpic) {
/* In FDPIC mode, ka->_sa_handler points to a function
diff --git a/linux-user/cris/cpu_loop.c b/linux-user/cris/cpu_loop.c
index 334edddd1e2..2c9081360de 100644
--- a/linux-user/cris/cpu_loop.c
+++ b/linux-user/cris/cpu_loop.c
@@ -85,8 +85,7 @@ void cpu_loop(CPUCRISState *env)
void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
{
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
- struct image_info *info = ts->info;
+ struct image_info *info = cpu->task_state->info;
env->regs[0] = regs->r0;
env->regs[1] = regs->r1;
diff --git a/linux-user/elfload.c b/linux-user/elfload.c
index bab4237e90f..1984226e0db 100644
--- a/linux-user/elfload.c
+++ b/linux-user/elfload.c
@@ -3805,12 +3805,11 @@ static int write_note(struct memelfnote *men, int fd)
static void fill_thread_info(struct elf_note_info *info, const CPUArchState
*env)
{
CPUState *cpu = env_cpu((CPUArchState *)env);
- TaskState *ts = (TaskState *)cpu->opaque;
struct elf_thread_status *ets;
ets = g_malloc0(sizeof (*ets));
ets->num_notes = 1; /* only prstatus is dumped */
- fill_prstatus(&ets->prstatus, ts, 0);
+ fill_prstatus(&ets->prstatus, cpu->task_state, 0);
elf_core_copy_regs(&ets->prstatus.pr_reg, env);
fill_note(&ets->notes[0], "CORE", NT_PRSTATUS, sizeof (ets->prstatus),
&ets->prstatus);
@@ -3835,7 +3834,7 @@ static int fill_note_info(struct elf_note_info *info,
{
#define NUMNOTES 3
CPUState *cpu = env_cpu((CPUArchState *)env);
- TaskState *ts = (TaskState *)cpu->opaque;
+ TaskState *ts = cpu->task_state;
int i;
info->notes = g_new0(struct memelfnote, NUMNOTES);
@@ -3959,7 +3958,6 @@ static int write_note_info(struct elf_note_info *info,
int fd)
static int elf_core_dump(int signr, const CPUArchState *env)
{
const CPUState *cpu = env_cpu((CPUArchState *)env);
- const TaskState *ts = (const TaskState *)cpu->opaque;
struct vm_area_struct *vma = NULL;
char corefile[PATH_MAX];
struct elf_note_info info;
@@ -3978,7 +3976,7 @@ static int elf_core_dump(int signr, const CPUArchState
*env)
if (dumpsize.rlim_cur == 0)
return 0;
- if (core_dump_filename(ts, corefile, sizeof (corefile)) < 0)
+ if (core_dump_filename(cpu->task_state, corefile, sizeof(corefile)) < 0)
return (-errno);
if ((fd = open(corefile, O_WRONLY | O_CREAT,
diff --git a/linux-user/hppa/signal.c b/linux-user/hppa/signal.c
index d1a58feeb36..76b68e817bc 100644
--- a/linux-user/hppa/signal.c
+++ b/linux-user/hppa/signal.c
@@ -111,11 +111,10 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
abi_ulong frame_addr, sp, haddr;
struct target_rt_sigframe *frame;
int i;
- TaskState *ts = (TaskState *)thread_cpu->opaque;
sp = get_sp_from_cpustate(env);
if ((ka->sa_flags & TARGET_SA_ONSTACK) && !sas_ss_flags(sp)) {
- sp = (ts->sigaltstack_used.ss_sp + 0x7f) & ~0x3f;
+ sp = (thread_cpu->task_state->sigaltstack_used.ss_sp + 0x7f) & ~0x3f;
}
frame_addr = QEMU_ALIGN_UP(sp, 64);
sp = frame_addr + PARISC_RT_SIGFRAME_SIZE32;
diff --git a/linux-user/linuxload.c b/linux-user/linuxload.c
index a27e1d0d8bc..263bf6aed73 100644
--- a/linux-user/linuxload.c
+++ b/linux-user/linuxload.c
@@ -83,7 +83,7 @@ static int prepare_binprm(struct linux_binprm *bprm)
abi_ulong loader_build_argptr(int envc, int argc, abi_ulong sp,
abi_ulong stringp, int push_ptr)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
int n = sizeof(abi_ulong);
abi_ulong envp;
abi_ulong argv;
diff --git a/linux-user/m68k/cpu_loop.c b/linux-user/m68k/cpu_loop.c
index c7a500b58c4..74674562fa6 100644
--- a/linux-user/m68k/cpu_loop.c
+++ b/linux-user/m68k/cpu_loop.c
@@ -118,7 +118,7 @@ void cpu_loop(CPUM68KState *env)
void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
{
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
struct image_info *info = ts->info;
env->pc = regs->pc;
diff --git a/linux-user/main.c b/linux-user/main.c
index 81f48ff54ed..53542df7556 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -807,7 +807,7 @@ int main(int argc, char **argv, char **envp)
/* build Task State */
ts->info = info;
ts->bprm = &bprm;
- cpu->opaque = ts;
+ cpu->task_state = ts;
task_settid(ts);
ret = loader_exec(execfd, exec_path, target_argv, target_environ, regs,
diff --git a/linux-user/mips/cpu_loop.c b/linux-user/mips/cpu_loop.c
index 9d813ece4e7..932b77e4023 100644
--- a/linux-user/mips/cpu_loop.c
+++ b/linux-user/mips/cpu_loop.c
@@ -322,8 +322,7 @@ error:
void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
{
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
- struct image_info *info = ts->info;
+ struct image_info *info = cpu->task_state->info;
int i;
struct mode_req {
diff --git a/linux-user/ppc/signal.c b/linux-user/ppc/signal.c
index b78613f7c86..4474981a2fb 100644
--- a/linux-user/ppc/signal.c
+++ b/linux-user/ppc/signal.c
@@ -491,7 +491,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
#if defined(TARGET_PPC64)
struct target_sigcontext *sc = 0;
#if !defined(TARGET_ABI32)
- struct image_info *image = ((TaskState *)thread_cpu->opaque)->info;
+ struct image_info *image = thread_cpu->task_state->info;
#endif
#endif
@@ -684,8 +684,6 @@ abi_long do_swapcontext(CPUArchState *env, abi_ulong
uold_ctx,
}
if (uold_ctx) {
- TaskState *ts = (TaskState *)thread_cpu->opaque;
-
if (!lock_user_struct(VERIFY_WRITE, uctx, uold_ctx, 1)) {
return -TARGET_EFAULT;
}
@@ -701,7 +699,8 @@ abi_long do_swapcontext(CPUArchState *env, abi_ulong
uold_ctx,
#endif
save_user_regs(env, mctx);
- host_to_target_sigset(&uctx->tuc_sigmask, &ts->signal_mask);
+ host_to_target_sigset(&uctx->tuc_sigmask,
+ &thread_cpu->task_state->signal_mask);
unlock_user_struct(uctx, uold_ctx, 1);
}
diff --git a/linux-user/riscv/cpu_loop.c b/linux-user/riscv/cpu_loop.c
index 9665dabb096..66860b27a92 100644
--- a/linux-user/riscv/cpu_loop.c
+++ b/linux-user/riscv/cpu_loop.c
@@ -124,8 +124,7 @@ void cpu_loop(CPURISCVState *env)
void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs)
{
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
- struct image_info *info = ts->info;
+ struct image_info *info = cpu->task_state->info;
env->pc = regs->sepc;
env->gpr[xSP] = regs->sp;
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 7eecec46c40..01f50ea0eef 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -185,7 +185,6 @@ void target_to_host_old_sigset(sigset_t *sigset,
int block_signals(void)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
sigset_t set;
/* It's OK to block everything including SIGSEGV, because we won't
@@ -195,7 +194,7 @@ int block_signals(void)
sigfillset(&set);
sigprocmask(SIG_SETMASK, &set, 0);
- return qatomic_xchg(&ts->signal_pending, 1);
+ return qatomic_xchg(&thread_cpu->task_state->signal_pending, 1);
}
/* Wrapper for sigprocmask function
@@ -207,7 +206,7 @@ int block_signals(void)
*/
int do_sigprocmask(int how, const sigset_t *set, sigset_t *oldset)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
if (oldset) {
*oldset = ts->signal_mask;
@@ -251,9 +250,7 @@ int do_sigprocmask(int how, const sigset_t *set, sigset_t
*oldset)
*/
void set_sigmask(const sigset_t *set)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
-
- ts->signal_mask = *set;
+ thread_cpu->task_state->signal_mask = *set;
}
#endif
@@ -261,7 +258,7 @@ void set_sigmask(const sigset_t *set)
int on_sig_stack(unsigned long sp)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
return (sp - ts->sigaltstack_used.ss_sp
< ts->sigaltstack_used.ss_size);
@@ -269,7 +266,7 @@ int on_sig_stack(unsigned long sp)
int sas_ss_flags(unsigned long sp)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
return (ts->sigaltstack_used.ss_size == 0 ? SS_DISABLE
: on_sig_stack(sp) ? SS_ONSTACK : 0);
@@ -280,7 +277,7 @@ abi_ulong target_sigsp(abi_ulong sp, struct
target_sigaction *ka)
/*
* This is the X/Open sanctioned signal stack switching.
*/
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
if ((ka->sa_flags & TARGET_SA_ONSTACK) && !sas_ss_flags(sp)) {
return ts->sigaltstack_used.ss_sp + ts->sigaltstack_used.ss_size;
@@ -290,7 +287,7 @@ abi_ulong target_sigsp(abi_ulong sp, struct
target_sigaction *ka)
void target_save_altstack(target_stack_t *uss, CPUArchState *env)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
__put_user(ts->sigaltstack_used.ss_sp, &uss->ss_sp);
__put_user(sas_ss_flags(get_sp_from_cpustate(env)), &uss->ss_flags);
@@ -543,7 +540,6 @@ static void signal_table_init(void)
void signal_init(void)
{
- TaskState *ts = (TaskState *)thread_cpu->opaque;
struct sigaction act;
struct sigaction oact;
int i;
@@ -553,7 +549,7 @@ void signal_init(void)
signal_table_init();
/* Set the signal mask from the host mask. */
- sigprocmask(0, 0, &ts->signal_mask);
+ sigprocmask(0, 0, &thread_cpu->task_state->signal_mask);
sigfillset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
@@ -623,7 +619,7 @@ static void QEMU_NORETURN dump_core_and_abort(int
target_sig)
{
CPUState *cpu = thread_cpu;
CPUArchState *env = cpu->env_ptr;
- TaskState *ts = (TaskState *)cpu->opaque;
+ TaskState *ts = cpu->task_state;
int host_sig, core_dumped = 0;
struct sigaction act;
@@ -678,7 +674,7 @@ int queue_signal(CPUArchState *env, int sig, int si_type,
target_siginfo_t *info)
{
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
trace_user_queue_signal(env, sig);
@@ -703,7 +699,7 @@ static void host_signal_handler(int host_signum, siginfo_t
*info,
{
CPUArchState *env = thread_cpu->env_ptr;
CPUState *cpu = env_cpu(env);
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
int sig;
target_siginfo_t tinfo;
@@ -760,7 +756,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong
uoss_addr, abi_ulong sp)
{
int ret;
struct target_sigaltstack oss;
- TaskState *ts = (TaskState *)thread_cpu->opaque;
+ TaskState *ts = thread_cpu->task_state;
/* XXX: test errors */
if(uoss_addr)
@@ -778,7 +774,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong
uoss_addr, abi_ulong sp)
#if defined(TARGET_PPC64)
/* ELF V2 for PPC64 has a 4K minimum stack size for signal handlers */
- struct image_info *image = ((TaskState *)thread_cpu->opaque)->info;
+ struct image_info *image = thread_cpu->task_state->info;
if (get_ppc64_abi(image) > 1) {
minstacksize = 4096;
}
@@ -918,7 +914,7 @@ static void handle_pending_signal(CPUArchState *cpu_env,
int sig,
sigset_t set;
target_sigset_t target_old_set;
struct target_sigaction *sa;
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
trace_user_handle_signal(cpu_env, sig);
/* dequeue signal */
@@ -1000,7 +996,7 @@ void process_pending_signals(CPUArchState *cpu_env)
{
CPUState *cpu = env_cpu(cpu_env);
int sig;
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
sigset_t set;
sigset_t *blocked_set;
diff --git a/linux-user/syscall.c b/linux-user/syscall.c
index 389ec097647..70343095d9a 100644
--- a/linux-user/syscall.c
+++ b/linux-user/syscall.c
@@ -6417,16 +6417,14 @@ static void *clone_func(void *arg)
new_thread_info *info = arg;
CPUArchState *env;
CPUState *cpu;
- TaskState *ts;
rcu_register_thread();
tcg_register_thread();
env = info->env;
cpu = env_cpu(env);
thread_cpu = cpu;
- ts = (TaskState *)cpu->opaque;
info->tid = sys_gettid();
- task_settid(ts);
+ task_settid(cpu->task_state);
if (info->child_tidptr)
put_user_u32(info->tid, info->child_tidptr);
if (info->parent_tidptr)
@@ -6454,7 +6452,6 @@ static int do_fork(CPUArchState *env, unsigned int flags,
abi_ulong newsp,
{
CPUState *cpu = env_cpu(env);
int ret;
- TaskState *ts;
CPUState *new_cpu;
CPUArchState *new_env;
sigset_t sigmask;
@@ -6466,7 +6463,8 @@ static int do_fork(CPUArchState *env, unsigned int flags,
abi_ulong newsp,
flags &= ~(CLONE_VFORK | CLONE_VM);
if (flags & CLONE_VM) {
- TaskState *parent_ts = (TaskState *)cpu->opaque;
+ TaskState *ts;
+ TaskState *parent_ts = cpu->task_state;
new_thread_info info;
pthread_attr_t attr;
@@ -6487,7 +6485,7 @@ static int do_fork(CPUArchState *env, unsigned int flags,
abi_ulong newsp,
cpu_clone_regs_child(new_env, newsp, flags);
cpu_clone_regs_parent(env, flags);
new_cpu = env_cpu(new_env);
- new_cpu->opaque = ts;
+ new_cpu->task_state = ts;
ts->bprm = parent_ts->bprm;
ts->info = parent_ts->info;
ts->signal_mask = parent_ts->signal_mask;
@@ -6576,11 +6574,10 @@ static int do_fork(CPUArchState *env, unsigned int
flags, abi_ulong newsp,
put_user_u32(sys_gettid(), child_tidptr);
if (flags & CLONE_PARENT_SETTID)
put_user_u32(sys_gettid(), parent_tidptr);
- ts = (TaskState *)cpu->opaque;
if (flags & CLONE_SETTLS)
cpu_set_tls (env, newtls);
if (flags & CLONE_CHILD_CLEARTID)
- ts->child_tidptr = child_tidptr;
+ cpu->task_state->child_tidptr = child_tidptr;
} else {
cpu_clone_regs_parent(env, flags);
fork_end(0);
@@ -7841,7 +7838,7 @@ int host_to_target_waitstatus(int status)
static int open_self_cmdline(void *cpu_env, int fd)
{
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
- struct linux_binprm *bprm = ((TaskState *)cpu->opaque)->bprm;
+ struct linux_binprm *bprm = cpu->task_state->bprm;
int i;
for (i = 0; i < bprm->argc; i++) {
@@ -7858,7 +7855,6 @@ static int open_self_cmdline(void *cpu_env, int fd)
static int open_self_maps(void *cpu_env, int fd)
{
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
- TaskState *ts = cpu->opaque;
GSList *map_info = read_self_maps();
GSList *s;
int count;
@@ -7879,7 +7875,7 @@ static int open_self_maps(void *cpu_env, int fd)
continue;
}
- if (h2g(min) == ts->info->stack_limit) {
+ if (h2g(min) == cpu->task_state->info->stack_limit) {
path = "[stack]";
} else {
path = e->path;
@@ -7920,7 +7916,7 @@ static int open_self_maps(void *cpu_env, int fd)
static int open_self_stat(void *cpu_env, int fd)
{
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
g_autoptr(GString) buf = g_string_new(NULL);
int i;
@@ -7952,9 +7948,8 @@ static int open_self_stat(void *cpu_env, int fd)
static int open_self_auxv(void *cpu_env, int fd)
{
CPUState *cpu = env_cpu((CPUArchState *)cpu_env);
- TaskState *ts = cpu->opaque;
- abi_ulong auxv = ts->info->saved_auxv;
- abi_ulong len = ts->info->auxv_len;
+ abi_ulong auxv = cpu->task_state->info->saved_auxv;
+ abi_ulong len = cpu->task_state->info->auxv_len;
char *ptr;
/*
@@ -8276,7 +8271,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
pthread_mutex_lock(&clone_lock);
if (CPU_NEXT(first_cpu)) {
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
object_property_set_bool(OBJECT(cpu), "realized", false, NULL);
object_unref(OBJECT(cpu));
@@ -8700,7 +8695,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
#ifdef TARGET_NR_pause /* not on alpha */
case TARGET_NR_pause:
if (!block_signals()) {
- sigsuspend(&((TaskState *)cpu->opaque)->signal_mask);
+ sigsuspend(&cpu->task_state->signal_mask);
}
return -TARGET_EINTR;
#endif
@@ -9305,7 +9300,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
#ifdef TARGET_NR_sigsuspend
case TARGET_NR_sigsuspend:
{
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
#if defined(TARGET_ALPHA)
abi_ulong mask = arg1;
target_to_host_old_sigset(&ts->sigsuspend_mask, &mask);
@@ -9325,7 +9320,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
#endif
case TARGET_NR_rt_sigsuspend:
{
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
if (arg2 != sizeof(target_sigset_t)) {
return -TARGET_EINVAL;
@@ -9736,7 +9731,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
case TARGET_NR_mprotect:
arg1 = cpu_untagged_addr(cpu, arg1);
{
- TaskState *ts = cpu->opaque;
+ TaskState *ts = cpu->task_state;
/* Special hack to detect libc making the stack executable. */
if ((arg3 & PROT_GROWSDOWN)
&& arg1 >= ts->info->stack_limit
@@ -12184,8 +12179,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
return do_set_thread_area(cpu_env, arg1);
#elif defined(TARGET_M68K)
{
- TaskState *ts = cpu->opaque;
- ts->tp_value = arg1;
+ cpu->task_state->tp_value = arg1;
return 0;
}
#else
@@ -12198,8 +12192,7 @@ static abi_long do_syscall1(void *cpu_env, int num,
abi_long arg1,
return do_get_thread_area(cpu_env, arg1);
#elif defined(TARGET_M68K)
{
- TaskState *ts = cpu->opaque;
- return ts->tp_value;
+ return cpu->task_state->tp_value;
}
#else
return -TARGET_ENOSYS;
diff --git a/linux-user/vm86.c b/linux-user/vm86.c
index 4412522c4c4..2efb4227716 100644
--- a/linux-user/vm86.c
+++ b/linux-user/vm86.c
@@ -73,7 +73,7 @@ static inline unsigned int vm_getl(CPUX86State *env,
void save_v86_state(CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
struct target_vm86plus_struct * target_v86;
if (!lock_user_struct(VERIFY_WRITE, target_v86, ts->target_v86, 0))
@@ -133,7 +133,7 @@ static inline void return_to_32bit(CPUX86State *env, int
retval)
static inline int set_IF(CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
ts->v86flags |= VIF_MASK;
if (ts->v86flags & VIP_MASK) {
@@ -146,9 +146,8 @@ static inline int set_IF(CPUX86State *env)
static inline void clear_IF(CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
- ts->v86flags &= ~VIF_MASK;
+ cs->task_state->v86flags &= ~VIF_MASK;
}
static inline void clear_TF(CPUX86State *env)
@@ -164,7 +163,7 @@ static inline void clear_AC(CPUX86State *env)
static inline int set_vflags_long(unsigned long eflags, CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
set_flags(ts->v86flags, eflags, ts->v86mask);
set_flags(env->eflags, eflags, SAFE_MASK);
@@ -178,7 +177,7 @@ static inline int set_vflags_long(unsigned long eflags,
CPUX86State *env)
static inline int set_vflags_short(unsigned short flags, CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
set_flags(ts->v86flags, flags, ts->v86mask & 0xffff);
set_flags(env->eflags, flags, SAFE_MASK);
@@ -192,7 +191,7 @@ static inline int set_vflags_short(unsigned short flags,
CPUX86State *env)
static inline unsigned int get_vflags(CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
unsigned int flags;
flags = env->eflags & RETURN_MASK;
@@ -209,7 +208,7 @@ static inline unsigned int get_vflags(CPUX86State *env)
static void do_int(CPUX86State *env, int intno)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
uint32_t int_addr, segoffs, ssp;
unsigned int sp;
@@ -268,7 +267,7 @@ void handle_vm86_trap(CPUX86State *env, int trapno)
void handle_vm86_fault(CPUX86State *env)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
uint32_t csp, ssp;
unsigned int ip, sp, newflags, newip, newcs, opcode, intno;
int data32, pref_done;
@@ -393,7 +392,7 @@ void handle_vm86_fault(CPUX86State *env)
int do_vm86(CPUX86State *env, long subfunction, abi_ulong vm86_addr)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
struct target_vm86plus_struct * target_v86;
int ret;
diff --git a/target/m68k/m68k-semi.c b/target/m68k/m68k-semi.c
index d919245e4f8..217a9b9fc94 100644
--- a/target/m68k/m68k-semi.c
+++ b/target/m68k/m68k-semi.c
@@ -425,7 +425,7 @@ void do_m68k_semihosting(CPUM68KState *env, int nr)
#if defined(CONFIG_USER_ONLY)
{
CPUState *cs = env_cpu(env);
- TaskState *ts = cs->opaque;
+ TaskState *ts = cs->task_state;
/* Allocate the heap using sbrk. */
if (!ts->heap_limit) {
abi_ulong ret;
--
2.26.2