From nobody Fri May 17 09:01:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.45 as permitted sender) client-ip=209.85.221.45; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f45.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.45 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com ARC-Seal: i=1; a=rsa-sha256; t=1614871576; cv=none; d=zohomail.com; s=zohoarc; b=DhAvargFkag6zdoS37Ef+ZN0P3RiyA0Wh4lT6z2nyp6ECJoQHPfau1FeXABhuQTz7MldsSoHpy/2+6oQeci+tq6TTl5QSZBJNd5GF3RdSlf+tktFTjh2muczKlwFTLrT9Rh8mv2fIGwGpK2gbN2VR7MsEI/0cLGn5YgB0DrvTLU= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614871576; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=5hURQl7mQu94lVdUQLSZ+hN5/5GBtgCRjunr2qL9FhQ=; b=hKnxT1v4wOYrteSdakK9FwDZ9/SOKiy6iZeLKhqgTpDC9VD46P+KNnykv8JxgRsgzcST4qXPbi32Y4+s9M+ejH4yx66v9jyAKFw8RmbCCwv75OP4JN/1slyjmway898iqi/iIU1Z8jGmQKG82d1BjUrrEuRbdDGpjpM2gUC9+Zs= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.45 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com Received: from mail-wr1-f45.google.com (mail-wr1-f45.google.com [209.85.221.45]) by mx.zohomail.com with SMTPS id 1614871576389958.1121181819694; Thu, 4 Mar 2021 07:26:16 -0800 (PST) Received: by mail-wr1-f45.google.com with SMTP id w11so28055428wrr.10 for ; Thu, 04 Mar 2021 07:26:15 -0800 (PST) Return-Path: Return-Path: Received: from localhost.localdomain (68.red-83-57-175.dynamicip.rima-tde.net. [83.57.175.68]) by smtp.gmail.com with ESMTPSA id h20sm10406447wmb.1.2021.03.04.07.26.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Mar 2021 07:26:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=5hURQl7mQu94lVdUQLSZ+hN5/5GBtgCRjunr2qL9FhQ=; b=Ty6PBKJ5TaJRlnQuF0995gTDUXErWv9neJVnixMaekw8AZOrwM9F1IxmUN0IxYF2dT 1wkkGHPxx1OAJ+dWWIej6P6jdaurQEnGLNIyg0ge0He/V8SM0xgGixv9+3xpAOLjW62P WEA+/jvW6YdqUZb9rm5RTU0h/s7PQbXFtB7FrMEBk7P5LUB1/n3ugD8sax2Pft2+GusK AN3LJyNfPJQk6sn3y/dcBywhj8JomtqZaqbhhgHQuy0zhh0hkGCxckAom7bZrQFabAwA X1Q6AhWadvV8giDLDXXsQB2LyKR1mNofC1LDYU8Uo/U25yGAQP5VYSKOLIcjfatkyMj1 11UQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=5hURQl7mQu94lVdUQLSZ+hN5/5GBtgCRjunr2qL9FhQ=; b=S6dhZpPVv6N9w0B8dEXc6lPAFgj4qxz/dTSaf/2aelshOshTDp2FcnDv94dIXwfCiF bKZHMkSruJHj0Yj5V162ceVnyvg300UbLH5jLqvkjY4TzvB3vhuzWwnnzrgIRdndRriP tpdqmDpmFaKb6GgS0Zjng5afhfPnBG0n+Zhwu1guEu8m/tLBJfkw9hR2hOXzjAkcN9dX RubiPo47Te9/7uyeL2PPiA9sRjEbSvE1GuOIHxac2SPe5g9Y6onLEc/cjm80QDHD2ZTE XDVxrx1iHNRGrDyQFkCf+gC29NziUzH99i43K2J2+IiGQZ7ZYRxGPibcLj3JZKLyhXuP uQTw== X-Gm-Message-State: AOAM532CknKYokVobf/IciDp2jCQpdelO5JXh0vwyr/FsoUN9HQCA44H AePPWIJqy80dv1sV8ApfCyI= X-Google-Smtp-Source: ABdhPJxuot6aFSYV4/0e8xpvNAuSCxx49myz9nzpvSPRAgv3FeCSGw+pf1n7dOJo7u5BThDCuhGUIQ== X-Received: by 2002:adf:e7cf:: with SMTP id e15mr4685569wrn.346.1614871574637; Thu, 04 Mar 2021 07:26:14 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Laurent Vivier Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini , Claudio Fontana , Eduardo Habkost , Marcel Apfelbaum , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 1/3] user-mode: Use QEMU_ALIGNED() on TaskState structure Date: Thu, 4 Mar 2021 16:26:05 +0100 Message-Id: <20210304152607.1817648-2-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210304152607.1817648-1-f4bug@amsat.org> References: <20210304152607.1817648-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) The rest of the codebase uses the QEMU_ALIGNED() introduced in commit 911a4d2215b ("compiler.h: add QEMU_ALIGNED() to enforce struct alignment"). Use it for the TaskState structure too. Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- bsd-user/qemu.h | 2 +- linux-user/qemu.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h index d2bcaab7413..1ec14010216 100644 --- a/bsd-user/qemu.h +++ b/bsd-user/qemu.h @@ -96,7 +96,7 @@ typedef struct TaskState { int signal_pending; /* non zero if a signal may be pending */ =20 uint8_t stack[]; -} __attribute__((aligned(16))) TaskState; +} QEMU_ALIGNED(16) TaskState; =20 void init_task_state(TaskState *ts); extern const char *qemu_uname_release; diff --git a/linux-user/qemu.h b/linux-user/qemu.h index 52c981710b4..d7815bfb845 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -157,7 +157,7 @@ typedef struct TaskState { =20 /* This thread's sigaltstack, if it has one */ struct target_sigaltstack sigaltstack_used; -} __attribute__((aligned(16))) TaskState; +} QEMU_ALIGNED(16) TaskState; =20 extern char *exec_path; void init_task_state(TaskState *ts); --=20 2.26.2 From nobody Fri May 17 09:01:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.128.54 as permitted sender) client-ip=209.85.128.54; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wm1-f54.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1614871581; cv=none; d=zohomail.com; s=zohoarc; b=MSeFmgbKV77Ika4cLa2s0BcqrHGNE+pSWrJz4LukgilgbRvWC2WSc5g6mzBiN7zFynrs28c4XgPI2PGgrSu9rF2p6dF+KaC4xfuhrCIjAGcyZCnqsLc8pWkK/5GWhRjznNj9CbDoyXuJtyrlmIB5JWnW/m73Q6ruEIJCN58Ukls= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614871581; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=dwFY6/nAJ0ZvzzLdKjxlnYisXjMm8PVxRfW0L/wwFHg=; b=fQrNktdmK83VvhpGL0sLpB9PYPpfRcCkcUSCgEEQ3+g0nFbNEfhjEumx2PmsTqcOWfoDksjDVLzPSg3roCr7NfIoDMzPI5Fjtk+Ost5K3rk9MEYnLYWqv+KwbPLqZarC5HxZMP1DYcw307NxPG23GaWD4HLzKUDImYxE6/DVQws= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.128.54 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wm1-f54.google.com (mail-wm1-f54.google.com [209.85.128.54]) by mx.zohomail.com with SMTPS id 1614871581454395.648408515332; Thu, 4 Mar 2021 07:26:21 -0800 (PST) Received: by mail-wm1-f54.google.com with SMTP id e23so8399553wmh.3 for ; Thu, 04 Mar 2021 07:26:20 -0800 (PST) Return-Path: Return-Path: Received: from localhost.localdomain (68.red-83-57-175.dynamicip.rima-tde.net. [83.57.175.68]) by smtp.gmail.com with ESMTPSA id z3sm37644876wrw.96.2021.03.04.07.26.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Mar 2021 07:26:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dwFY6/nAJ0ZvzzLdKjxlnYisXjMm8PVxRfW0L/wwFHg=; b=JhmJh53r6CudbqtrwUfmO43N05X2fjVJ+YhelIWEsuveJMzB/kyuR6bebRpIXQw9oW 9h210rD1gx2LVQFLjhoGULwNAZjKbiDLBXDfBC2GVYy8ZXcNVxAfxJ4B6hHvaQdKhORg Sx5uKxy/1rMOBdIt2YJAvuLazHIsEWCoTm/xsqf2lxC9vLTHp5nJAAjuLSzO7CWtluSb qlRzHf2plLwmCNEUTJ0Iv0w0zOQb0WfAenz13ZTZ4pqllXRszaXWCPFHDNZTIkaH1H6b zRmcC1kBQLfVgsuH+FjZZL1AikzsrzvJo2NmQYyHQsEWX9aq0WNHXb09w5AMPBAGNKKl T+0w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=dwFY6/nAJ0ZvzzLdKjxlnYisXjMm8PVxRfW0L/wwFHg=; b=cvyflhoJllhoigBlZLtUIruy062qKXYksIvTrVlhk6X82klyLC1k/7KP0iJxigYRd+ HTyimXmE+wDvyxaz9V5B3xZwIROPFdQvsqt28DEOFOhgXfVUYu7bNSJdSeaEsWV+ln/8 b+0ZX1jzfusHLlXFU4ZtaamvCuVx3Ge+aFuwpy6a+RbkmghmHWdz1X8lrVsyyMa85k5s E0PkmTUHIuV01eeYyxzIZtcEuglmSe0S5+XRTvsHFATa4HzbNnal7vfmr4841kFDBfJX 6SstVKSj84tLtB6i+0aIW2PpHwqflKgmB3dy//GNEVHgw7f5hIUy2s5j1y7skLAGlzpX WU8g== X-Gm-Message-State: AOAM533JibErNi6G3ZGlKCBoiQCcvbyERkk2Kzs0E5XGQma+Tvy8UXcH 8MFRNWNCePpTL7lkElTvue4= X-Google-Smtp-Source: ABdhPJyaa5DSOzFOzRl1x3d9eAZt7ULWXFXYaib24BKwhAtpz4/Xut4VOr+xcl4RC7pe4zqAnt0aAA== X-Received: by 2002:a05:600c:35c1:: with SMTP id r1mr4562094wmq.143.1614871579669; Thu, 04 Mar 2021 07:26:19 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Laurent Vivier Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini , Claudio Fontana , Eduardo Habkost , Marcel Apfelbaum , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 2/3] cpu: Forward-declare user-mode TaskState structure Date: Thu, 4 Mar 2021 16:26:06 +0100 Message-Id: <20210304152607.1817648-3-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210304152607.1817648-1-f4bug@amsat.org> References: <20210304152607.1817648-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) The TaskState structure is only used by user emulation. Currently it is hold in CPUState as a void pointer and casted in user-specific code. In order to simplify by - renaming this generic field - remove the casts in the next commit, forward-declare the type in "cpu.h". Signed-off-by: Philippe Mathieu-Daud=C3=A9 --- bsd-user/qemu.h | 4 ++-- include/hw/core/cpu.h | 7 +++++-- linux-user/qemu.h | 4 ++-- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h index 1ec14010216..00e76ad856e 100644 --- a/bsd-user/qemu.h +++ b/bsd-user/qemu.h @@ -83,7 +83,7 @@ struct emulated_sigtable { =20 /* NOTE: we force a big alignment so that the stack stored after is aligned too */ -typedef struct TaskState { +struct TaskState { pid_t ts_tid; /* tid (or pid) of this task */ =20 struct TaskState *next; @@ -96,7 +96,7 @@ typedef struct TaskState { int signal_pending; /* non zero if a signal may be pending */ =20 uint8_t stack[]; -} QEMU_ALIGNED(16) TaskState; +} QEMU_ALIGNED(16); =20 void init_task_state(TaskState *ts); extern const char *qemu_uname_release; diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h index c005d3dc2d8..f4d2169cc8e 100644 --- a/include/hw/core/cpu.h +++ b/include/hw/core/cpu.h @@ -274,6 +274,9 @@ struct qemu_work_item; #define CPU_UNSET_NUMA_NODE_ID -1 #define CPU_TRACE_DSTATE_MAX_EVENTS 32 =20 +/* See bsd-user/qemu.h and linux-user/qemu.h */ +typedef struct TaskState TaskState; + /** * CPUState: * @cpu_index: CPU index (informative). @@ -310,7 +313,7 @@ struct qemu_work_item; * @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 data. + * @opaque: 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. @@ -386,7 +389,7 @@ struct CPUState { QTAILQ_HEAD(, CPUWatchpoint) watchpoints; CPUWatchpoint *watchpoint_hit; =20 - void *opaque; + TaskState *opaque; =20 /* 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/qemu.h b/linux-user/qemu.h index d7815bfb845..5394f726892 100644 --- a/linux-user/qemu.h +++ b/linux-user/qemu.h @@ -100,7 +100,7 @@ struct emulated_sigtable { =20 /* NOTE: we force a big alignment so that the stack stored after is aligned too */ -typedef struct TaskState { +struct TaskState { pid_t ts_tid; /* tid (or pid) of this task */ #ifdef TARGET_ARM # ifdef TARGET_ABI32 @@ -157,7 +157,7 @@ typedef struct TaskState { =20 /* This thread's sigaltstack, if it has one */ struct target_sigaltstack sigaltstack_used; -} QEMU_ALIGNED(16) TaskState; +} QEMU_ALIGNED(16); =20 extern char *exec_path; void init_task_state(TaskState *ts); --=20 2.26.2 From nobody Fri May 17 09:01:35 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of _spf.google.com designates 209.85.221.50 as permitted sender) client-ip=209.85.221.50; envelope-from=philippe.mathieu.daude@gmail.com; helo=mail-wr1-f50.google.com; Authentication-Results: mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.50 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail(p=none dis=none) header.from=amsat.org ARC-Seal: i=1; a=rsa-sha256; t=1614871589; cv=none; d=zohomail.com; s=zohoarc; b=UDU+DZmf/KzeuyClxt6l1LRfc3YSw7BeGglkxK5OLmd2307kuu6d7Ipp//OWWkSD7hWUTauLcb1VZJz2Mx5OqYJ3+TRBBiprtQ+ETfXcpoBK9RbMG7jPRSl2e2jt61nMRuk+R39iG3Uu52imKfb5g85uiAFjIlD99iuejoRKrko= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1614871589; h=Content-Type:Content-Transfer-Encoding:Cc:Date:From:In-Reply-To:MIME-Version:Message-ID:References:Sender:Subject:To; bh=M9xAL5D/T+erOOt4nYnSvEJ1KyVpwBXFxggwnysClZs=; b=EeSqyvzqNYKz9KpdDZ0l26K8XHE00PcWB0Wy1ixhCx8JLRqFiL2fQG+cRtPK0VoGVKlwg+0ZNLabpBHkCjFcsZBZ4EF4gwOTwqYY6qSsa2Afxg5DUvzGusk1v8JxylBTW0zZqVtCBaXmZk+piff2MazLgNkhJGmVo0hQ1HJ1as4= ARC-Authentication-Results: i=1; mx.zohomail.com; dkim=pass; spf=pass (zohomail.com: domain of _spf.google.com designates 209.85.221.50 as permitted sender) smtp.mailfrom=philippe.mathieu.daude@gmail.com; dmarc=fail header.from= (p=none dis=none) header.from= Received: from mail-wr1-f50.google.com (mail-wr1-f50.google.com [209.85.221.50]) by mx.zohomail.com with SMTPS id 161487158910386.83936564864678; Thu, 4 Mar 2021 07:26:29 -0800 (PST) Received: by mail-wr1-f50.google.com with SMTP id l12so28088150wry.2 for ; Thu, 04 Mar 2021 07:26:26 -0800 (PST) Return-Path: Return-Path: Received: from localhost.localdomain (68.red-83-57-175.dynamicip.rima-tde.net. [83.57.175.68]) by smtp.gmail.com with ESMTPSA id l2sm7834133wml.38.2021.03.04.07.26.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Mar 2021 07:26:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=M9xAL5D/T+erOOt4nYnSvEJ1KyVpwBXFxggwnysClZs=; b=qodYh789KeT8vPirjW/fC3Z9IU7ACGcljnaNcrcyRcPbbmdrQyQ9bcDEqYiclbZsUX 1MlZZJqcSRIDWHT4JiuDx1HVfyQPvMoanq9/ZNykw/CBVePEsrA5RGtnOoSreAZ2wv6u JBpKjqW0aM8ICf2YZGK3bBnX6cAE+Jz6OkpBPUwDMXzcAGYMVQR3+ZVOp0i/X7hT590M GWrs5DQBKnGd26Bz7DBM+Uq1nVLv4oV1O72DOCPZSo9GqFSTyaVZ/xPhIIuJCpzohYMe /2HEcmzec8DVzp0zPY8uROOYOECiwHoP21IAeDlSVFF7Daw3nnz7YVRBJ8dMRCq6kfwh cw6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=M9xAL5D/T+erOOt4nYnSvEJ1KyVpwBXFxggwnysClZs=; b=bz4v6WzCUb/jOzGF92nGfO0YaRyJzSSt/VKflkkKSji7P+ubYw9bqDAuT4AsONA6Uz 8DAh1xsjuhzeuCq1+BkEbC62duVKWyCdUvvVf2R33gO7NcRwQsE9rT1bT5ku6pjBsn/n e5NDm/j3E0dIr6aottE5cJ7eAZyQCCjX/yZ0xKXMw4ErAYajM50V3XcMAPixqR9iSJ6S HZ4HrDtXSGLMXS4m5zqHLIH6c0HcCab/N9Jw2FzOYKkjQ/iCKAP6Zg4rytpB1tav9NE4 3H7LFSMXPXW0WTZMB5mbnRqcPKlk2hUMPigSuegvVPIXwSYt95f/974TZhjhsXEZwAbY ZSIg== X-Gm-Message-State: AOAM531V5ErtfBm1UT/KuxWncp0G3c12V6sfUXJz6Aye/AKUVWtlCDni 5L10Sg4q53mQzuqpOCuoX+0= X-Google-Smtp-Source: ABdhPJzj2g7bEGKMVZZE9LIR7mjTwOjMdY1UwHMf3vPemH7g7OBblwFAMAG3rtsqmJ+0aTXj+iLdUg== X-Received: by 2002:adf:b641:: with SMTP id i1mr4602378wre.295.1614871585015; Thu, 04 Mar 2021 07:26:25 -0800 (PST) Sender: =?UTF-8?Q?Philippe_Mathieu=2DDaud=C3=A9?= From: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= To: qemu-devel@nongnu.org, Laurent Vivier Cc: =?UTF-8?q?Alex=20Benn=C3=A9e?= , Richard Henderson , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Paolo Bonzini , Claudio Fontana , Eduardo Habkost , Marcel Apfelbaum , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [PATCH 3/3] user-mode: Rename CPUState::opaque as CPUState::task_state Date: Thu, 4 Mar 2021 16:26:07 +0100 Message-Id: <20210304152607.1817648-4-f4bug@amsat.org> X-Mailer: git-send-email 2.26.2 In-Reply-To: <20210304152607.1817648-1-f4bug@amsat.org> References: <20210304152607.1817648-1-f4bug@amsat.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-ZohoMail-DKIM: pass (identity @gmail.com) 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=C3=A9 --- 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; =20 - TaskState *opaque; + TaskState *task_state; =20 /* 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 *en= v, unsigned flags) static inline void cpu_set_tls(CPUM68KState *env, target_ulong newtls) { CPUState *cs =3D env_cpu(env); - TaskState *ts =3D cs->opaque; =20 - ts->tp_value =3D newtls; + cs->task_state->tp_value =3D newtls; } =20 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_ =3D &((TaskState *)thread_cpu->opaque)->signal_pending; \ + int *psp_ =3D &thread_cpu->task_state->signal_pending; \ ret_ =3D safe_syscall_base(psp_, __VA_ARGS__); \ if (is_error(ret_)) { \ errno =3D -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 =3D info; - cpu->opaque =3D ts; + cpu->task_state =3D ts; =20 #if defined(TARGET_I386) env->cr[0] =3D 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, t= arget_ulong addr, static inline int cpu_gdb_index(CPUState *cpu) { #if defined(CONFIG_USER_ONLY) - TaskState *ts =3D (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_c= tx, void *user_ctx) { TaskState *ts; =20 - ts =3D gdbserver_state.c_cpu->opaque; + ts =3D gdbserver_state.c_cpu->task_state; g_string_printf(gdbserver_state.str_buf, "Text=3D" TARGET_ABI_FMT_lx ";Data=3D" TARGET_ABI_FMT_lx @@ -2174,7 +2173,7 @@ static void handle_query_supported(GdbCmdContext *gdb= _ctx, void *user_ctx) } =20 #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; =20 if (gdb_ctx->num_params < 2) { @@ -2253,9 +2251,8 @@ static void handle_query_xfer_auxv(GdbCmdContext *gdb= _ctx, void *user_ctx) =20 offset =3D gdb_ctx->params[0].val_ul; len =3D gdb_ctx->params[1].val_ul; - ts =3D gdbserver_state.c_cpu->opaque; - saved_auxv =3D ts->info->saved_auxv; - auxv_len =3D ts->info->auxv_len; + saved_auxv =3D gdbserver_state.c_cpu->task_state->info->saved_auxv; + auxv_len =3D gdbserver_state.c_cpu->task_state->info->auxv_len; =20 if (offset >=3D auxv_len) { put_packet("E00"); diff --git a/hw/semihosting/arm-compat-semi.c b/hw/semihosting/arm-compat-s= emi.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, uint= 32_t code) { if (code =3D=3D (uint32_t)-1) { #ifdef CONFIG_USER_ONLY - TaskState *ts =3D cs->opaque; - - ts->swi_errno =3D errno; + cs->task_state->swi_errno =3D errno; #else syscall_err =3D errno; #endif @@ -388,9 +386,7 @@ static inline uint32_t set_swi_errno(CPUState *cs, uint= 32_t code) static inline uint32_t get_swi_errno(CPUState *cs) { #ifdef CONFIG_USER_ONLY - TaskState *ts =3D 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 =3D cs->opaque; + TaskState *ts =3D 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 =3D cs->opaque; + TaskState *ts =3D cs->task_state; #else target_ulong rambase =3D 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 tar= get_pt_regs *regs) { ARMCPU *cpu =3D env_archcpu(env); CPUState *cs =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; struct image_info *info =3D ts->info; int i; =20 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 =3D cs->opaque; + TaskState *ts =3D cs->task_state; uint32_t opcode; int rc; =20 @@ -470,7 +470,7 @@ void cpu_loop(CPUARMState *env) void target_cpu_copy_regs(CPUArchState *env, struct target_pt_regs *regs) { CPUState *cpu =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; struct image_info *info =3D ts->info; int i; =20 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; =20 int thumb; - int is_fdpic =3D info_is_fdpic(((TaskState *)thread_cpu->opaque)->info= ); + int is_fdpic =3D info_is_fdpic(thread_cpu->task_state->info); =20 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 =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; - struct image_info *info =3D ts->info; + struct image_info *info =3D cpu->task_state->info; =20 env->regs[0] =3D regs->r0; env->regs[1] =3D 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 f= d) static void fill_thread_info(struct elf_note_info *info, const CPUArchStat= e *env) { CPUState *cpu =3D env_cpu((CPUArchState *)env); - TaskState *ts =3D (TaskState *)cpu->opaque; struct elf_thread_status *ets; =20 ets =3D g_malloc0(sizeof (*ets)); ets->num_notes =3D 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 =3D env_cpu((CPUArchState *)env); - TaskState *ts =3D (TaskState *)cpu->opaque; + TaskState *ts =3D cpu->task_state; int i; =20 info->notes =3D 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 =3D env_cpu((CPUArchState *)env); - const TaskState *ts =3D (const TaskState *)cpu->opaque; struct vm_area_struct *vma =3D NULL; char corefile[PATH_MAX]; struct elf_note_info info; @@ -3978,7 +3976,7 @@ static int elf_core_dump(int signr, const CPUArchStat= e *env) if (dumpsize.rlim_cur =3D=3D 0) return 0; =20 - if (core_dump_filename(ts, corefile, sizeof (corefile)) < 0) + if (core_dump_filename(cpu->task_state, corefile, sizeof(corefile)) < = 0) return (-errno); =20 if ((fd =3D 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 =3D (TaskState *)thread_cpu->opaque; =20 sp =3D get_sp_from_cpustate(env); if ((ka->sa_flags & TARGET_SA_ONSTACK) && !sas_ss_flags(sp)) { - sp =3D (ts->sigaltstack_used.ss_sp + 0x7f) & ~0x3f; + sp =3D (thread_cpu->task_state->sigaltstack_used.ss_sp + 0x7f) & ~= 0x3f; } frame_addr =3D QEMU_ALIGN_UP(sp, 64); sp =3D 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 =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; int n =3D 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 =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; struct image_info *info =3D ts->info; =20 env->pc =3D 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 =3D info; ts->bprm =3D &bprm; - cpu->opaque =3D ts; + cpu->task_state =3D ts; task_settid(ts); =20 ret =3D loader_exec(execfd, exec_path, target_argv, target_environ, re= gs, 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 =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; - struct image_info *info =3D ts->info; + struct image_info *info =3D cpu->task_state->info; int i; =20 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 *k= a, #if defined(TARGET_PPC64) struct target_sigcontext *sc =3D 0; #if !defined(TARGET_ABI32) - struct image_info *image =3D ((TaskState *)thread_cpu->opaque)->info; + struct image_info *image =3D thread_cpu->task_state->info; #endif #endif =20 @@ -684,8 +684,6 @@ abi_long do_swapcontext(CPUArchState *env, abi_ulong uo= ld_ctx, } =20 if (uold_ctx) { - TaskState *ts =3D (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 uo= ld_ctx, #endif =20 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); =20 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 =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; - struct image_info *info =3D ts->info; + struct image_info *info =3D cpu->task_state->info; =20 env->pc =3D regs->sepc; env->gpr[xSP] =3D 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, =20 int block_signals(void) { - TaskState *ts =3D (TaskState *)thread_cpu->opaque; sigset_t set; =20 /* 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); =20 - return qatomic_xchg(&ts->signal_pending, 1); + return qatomic_xchg(&thread_cpu->task_state->signal_pending, 1); } =20 /* 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 =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; =20 if (oldset) { *oldset =3D 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 =3D (TaskState *)thread_cpu->opaque; - - ts->signal_mask =3D *set; + thread_cpu->task_state->signal_mask =3D *set; } #endif =20 @@ -261,7 +258,7 @@ void set_sigmask(const sigset_t *set) =20 int on_sig_stack(unsigned long sp) { - TaskState *ts =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; =20 return (sp - ts->sigaltstack_used.ss_sp < ts->sigaltstack_used.ss_size); @@ -269,7 +266,7 @@ int on_sig_stack(unsigned long sp) =20 int sas_ss_flags(unsigned long sp) { - TaskState *ts =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; =20 return (ts->sigaltstack_used.ss_size =3D=3D 0 ? SS_DISABLE : on_sig_stack(sp) ? SS_ONSTACK : 0); @@ -280,7 +277,7 @@ abi_ulong target_sigsp(abi_ulong sp, struct target_siga= ction *ka) /* * This is the X/Open sanctioned signal stack switching. */ - TaskState *ts =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; =20 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_siga= ction *ka) =20 void target_save_altstack(target_stack_t *uss, CPUArchState *env) { - TaskState *ts =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; =20 __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) =20 void signal_init(void) { - TaskState *ts =3D (TaskState *)thread_cpu->opaque; struct sigaction act; struct sigaction oact; int i; @@ -553,7 +549,7 @@ void signal_init(void) signal_table_init(); =20 /* Set the signal mask from the host mask. */ - sigprocmask(0, 0, &ts->signal_mask); + sigprocmask(0, 0, &thread_cpu->task_state->signal_mask); =20 sigfillset(&act.sa_mask); act.sa_flags =3D SA_SIGINFO; @@ -623,7 +619,7 @@ static void QEMU_NORETURN dump_core_and_abort(int targe= t_sig) { CPUState *cpu =3D thread_cpu; CPUArchState *env =3D cpu->env_ptr; - TaskState *ts =3D (TaskState *)cpu->opaque; + TaskState *ts =3D cpu->task_state; int host_sig, core_dumped =3D 0; struct sigaction act; =20 @@ -678,7 +674,7 @@ int queue_signal(CPUArchState *env, int sig, int si_typ= e, target_siginfo_t *info) { CPUState *cpu =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; =20 trace_user_queue_signal(env, sig); =20 @@ -703,7 +699,7 @@ static void host_signal_handler(int host_signum, siginf= o_t *info, { CPUArchState *env =3D thread_cpu->env_ptr; CPUState *cpu =3D env_cpu(env); - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; =20 int sig; target_siginfo_t tinfo; @@ -760,7 +756,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong u= oss_addr, abi_ulong sp) { int ret; struct target_sigaltstack oss; - TaskState *ts =3D (TaskState *)thread_cpu->opaque; + TaskState *ts =3D thread_cpu->task_state; =20 /* XXX: test errors */ if(uoss_addr) @@ -778,7 +774,7 @@ abi_long do_sigaltstack(abi_ulong uss_addr, abi_ulong u= oss_addr, abi_ulong sp) =20 #if defined(TARGET_PPC64) /* ELF V2 for PPC64 has a 4K minimum stack size for signal handler= s */ - struct image_info *image =3D ((TaskState *)thread_cpu->opaque)->in= fo; + struct image_info *image =3D thread_cpu->task_state->info; if (get_ppc64_abi(image) > 1) { minstacksize =3D 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 =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; =20 trace_user_handle_signal(cpu_env, sig); /* dequeue signal */ @@ -1000,7 +996,7 @@ void process_pending_signals(CPUArchState *cpu_env) { CPUState *cpu =3D env_cpu(cpu_env); int sig; - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; sigset_t set; sigset_t *blocked_set; =20 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 =3D arg; CPUArchState *env; CPUState *cpu; - TaskState *ts; =20 rcu_register_thread(); tcg_register_thread(); env =3D info->env; cpu =3D env_cpu(env); thread_cpu =3D cpu; - ts =3D (TaskState *)cpu->opaque; info->tid =3D 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 fl= ags, abi_ulong newsp, { CPUState *cpu =3D 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 fl= ags, abi_ulong newsp, flags &=3D ~(CLONE_VFORK | CLONE_VM); =20 if (flags & CLONE_VM) { - TaskState *parent_ts =3D (TaskState *)cpu->opaque; + TaskState *ts; + TaskState *parent_ts =3D cpu->task_state; new_thread_info info; pthread_attr_t attr; =20 @@ -6487,7 +6485,7 @@ static int do_fork(CPUArchState *env, unsigned int fl= ags, abi_ulong newsp, cpu_clone_regs_child(new_env, newsp, flags); cpu_clone_regs_parent(env, flags); new_cpu =3D env_cpu(new_env); - new_cpu->opaque =3D ts; + new_cpu->task_state =3D ts; ts->bprm =3D parent_ts->bprm; ts->info =3D parent_ts->info; ts->signal_mask =3D 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 =3D (TaskState *)cpu->opaque; if (flags & CLONE_SETTLS) cpu_set_tls (env, newtls); if (flags & CLONE_CHILD_CLEARTID) - ts->child_tidptr =3D child_tidptr; + cpu->task_state->child_tidptr =3D 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 =3D env_cpu((CPUArchState *)cpu_env); - struct linux_binprm *bprm =3D ((TaskState *)cpu->opaque)->bprm; + struct linux_binprm *bprm =3D cpu->task_state->bprm; int i; =20 for (i =3D 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 =3D env_cpu((CPUArchState *)cpu_env); - TaskState *ts =3D cpu->opaque; GSList *map_info =3D read_self_maps(); GSList *s; int count; @@ -7879,7 +7875,7 @@ static int open_self_maps(void *cpu_env, int fd) continue; } =20 - if (h2g(min) =3D=3D ts->info->stack_limit) { + if (h2g(min) =3D=3D cpu->task_state->info->stack_limit) { path =3D "[stack]"; } else { path =3D 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 =3D env_cpu((CPUArchState *)cpu_env); - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; g_autoptr(GString) buf =3D g_string_new(NULL); int i; =20 @@ -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 =3D env_cpu((CPUArchState *)cpu_env); - TaskState *ts =3D cpu->opaque; - abi_ulong auxv =3D ts->info->saved_auxv; - abi_ulong len =3D ts->info->auxv_len; + abi_ulong auxv =3D cpu->task_state->info->saved_auxv; + abi_ulong len =3D cpu->task_state->info->auxv_len; char *ptr; =20 /* @@ -8276,7 +8271,7 @@ static abi_long do_syscall1(void *cpu_env, int num, a= bi_long arg1, pthread_mutex_lock(&clone_lock); =20 if (CPU_NEXT(first_cpu)) { - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; =20 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, a= bi_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, a= bi_long arg1, #ifdef TARGET_NR_sigsuspend case TARGET_NR_sigsuspend: { - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; #if defined(TARGET_ALPHA) abi_ulong mask =3D arg1; target_to_host_old_sigset(&ts->sigsuspend_mask, &mask); @@ -9325,7 +9320,7 @@ static abi_long do_syscall1(void *cpu_env, int num, a= bi_long arg1, #endif case TARGET_NR_rt_sigsuspend: { - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; =20 if (arg2 !=3D sizeof(target_sigset_t)) { return -TARGET_EINVAL; @@ -9736,7 +9731,7 @@ static abi_long do_syscall1(void *cpu_env, int num, a= bi_long arg1, case TARGET_NR_mprotect: arg1 =3D cpu_untagged_addr(cpu, arg1); { - TaskState *ts =3D cpu->opaque; + TaskState *ts =3D cpu->task_state; /* Special hack to detect libc making the stack executable. */ if ((arg3 & PROT_GROWSDOWN) && arg1 >=3D 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 =3D cpu->opaque; - ts->tp_value =3D arg1; + cpu->task_state->tp_value =3D 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 =3D 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; struct target_vm86plus_struct * target_v86; =20 if (!lock_user_struct(VERIFY_WRITE, target_v86, ts->target_v86, 0)) @@ -133,7 +133,7 @@ static inline void return_to_32bit(CPUX86State *env, in= t retval) static inline int set_IF(CPUX86State *env) { CPUState *cs =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; =20 ts->v86flags |=3D 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; =20 - ts->v86flags &=3D ~VIF_MASK; + cs->task_state->v86flags &=3D ~VIF_MASK; } =20 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; =20 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; =20 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; unsigned int flags; =20 flags =3D 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; uint32_t int_addr, segoffs, ssp; unsigned int sp; =20 @@ -268,7 +267,7 @@ void handle_vm86_trap(CPUX86State *env, int trapno) void handle_vm86_fault(CPUX86State *env) { CPUState *cs =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; struct target_vm86plus_struct * target_v86; int ret; =20 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 =3D env_cpu(env); - TaskState *ts =3D cs->opaque; + TaskState *ts =3D cs->task_state; /* Allocate the heap using sbrk. */ if (!ts->heap_limit) { abi_ulong ret; --=20 2.26.2