On 14/9/23 04:44, Richard Henderson wrote:
Signed-off-by: Richard Henderson <richard.hender...@linaro.org>
---
include/exec/cpu-all.h | 1 -
include/hw/core/cpu.h | 9 ++++++---
target/arm/common-semi-target.h | 2 +-
accel/tcg/cpu-exec.c | 8 ++++----
accel/tcg/cputlb.c | 18 +++++++++---------
accel/tcg/translate-all.c | 4 ++--
gdbstub/gdbstub.c | 4 ++--
gdbstub/user-target.c | 2 +-
hw/i386/kvm/clock.c | 2 +-
hw/intc/mips_gic.c | 2 +-
hw/intc/riscv_aclint.c | 12 ++++++------
hw/intc/riscv_imsic.c | 2 +-
hw/ppc/e500.c | 4 ++--
hw/ppc/spapr.c | 2 +-
linux-user/elfload.c | 4 ++--
linux-user/i386/cpu_loop.c | 2 +-
linux-user/main.c | 4 ++--
linux-user/signal.c | 15 +++++++--------
monitor/hmp-cmds-target.c | 2 +-
semihosting/arm-compat-semi.c | 6 +++---
semihosting/syscalls.c | 28 ++++++++++++++--------------
target/alpha/translate.c | 4 ++--
target/arm/cpu.c | 8 ++++----
target/arm/helper.c | 2 +-
target/arm/tcg/translate-a64.c | 4 ++--
target/arm/tcg/translate.c | 6 +++---
target/avr/translate.c | 2 +-
target/cris/translate.c | 4 ++--
target/hexagon/translate.c | 4 ++--
target/hppa/mem_helper.c | 2 +-
target/hppa/translate.c | 4 ++--
target/i386/tcg/sysemu/excp_helper.c | 2 +-
target/i386/tcg/tcg-cpu.c | 2 +-
target/i386/tcg/translate.c | 4 ++--
target/loongarch/translate.c | 4 ++--
target/m68k/translate.c | 4 ++--
target/microblaze/translate.c | 2 +-
target/mips/tcg/sysemu/mips-semi.c | 4 ++--
target/mips/tcg/translate.c | 4 ++--
target/nios2/translate.c | 4 ++--
target/openrisc/translate.c | 2 +-
target/ppc/excp_helper.c | 10 +++++-----
target/ppc/translate.c | 4 ++--
target/riscv/translate.c | 6 +++---
target/rx/cpu.c | 3 ---
target/rx/translate.c | 2 +-
target/s390x/tcg/translate.c | 2 +-
target/sh4/op_helper.c | 2 +-
target/sh4/translate.c | 4 ++--
target/sparc/translate.c | 4 ++--
target/tricore/translate.c | 4 ++--
target/xtensa/translate.c | 4 ++--
target/i386/tcg/decode-new.c.inc | 2 +-
53 files changed, 125 insertions(+), 127 deletions(-)
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index ae0cb2ce50..40831122ce 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -433,7 +433,6 @@ void tcg_exec_unrealizefn(CPUState *cpu);
*/
static inline void cpu_set_cpustate_pointers(ArchCPU *cpu)
{
- cpu->parent_obj.env_ptr = &cpu->env;
}
/* Validate correct placement of CPUArchState. */
diff --git a/include/hw/core/cpu.h b/include/hw/core/cpu.h
index 99066da2f3..f3fa1ffa95 100644
--- a/include/hw/core/cpu.h
+++ b/include/hw/core/cpu.h
@@ -440,7 +440,6 @@ struct qemu_work_item;
* @num_ases: number of CPUAddressSpaces in @cpu_ases
* @as: Pointer to the first AddressSpace, for the convenience of targets
which
* only have a single AddressSpace
- * @env_ptr: Pointer to subclass-specific CPUArchState field.
* @gdb_regs: Additional GDB registers.
* @gdb_num_regs: Number of total registers accessible to GDB.
* @gdb_num_g_regs: Number of registers in GDB 'g' packets.
@@ -511,8 +510,6 @@ struct CPUState {
AddressSpace *as;
MemoryRegion *memory;
- CPUArchState *env_ptr;
-
CPUJumpCache *tb_jmp_cache;
struct GDBRegisterState *gdb_regs;
@@ -594,6 +591,12 @@ struct CPUState {
QEMU_BUILD_BUG_ON(offsetof(CPUState, neg) + sizeof(CPUNegativeOffsetState)
!= sizeof(CPUState));
+static inline CPUArchState *cpu_env(CPUState *cpu)
+{
+ /* We validate that CPUArchState follows CPUState in cpu-all.h. */
+ return (CPUArchState *)(cpu + 1);
+}
Do we also need to remove this check?
-- >8 --
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index 40831122ce..3d87548f9b 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -437,7 +437,6 @@ static inline void cpu_set_cpustate_pointers(ArchCPU
*cpu)
/* Validate correct placement of CPUArchState. */
QEMU_BUILD_BUG_ON(offsetof(ArchCPU, parent_obj) != 0);
-QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
/**
* env_archcpu(env)
---
I'm getting:
include/qemu/compiler.h:74:36: error: static assertion failed: "not
expecting: offsetof(ArchCPU, env) != sizeof(CPUState)"
74 | #define QEMU_BUILD_BUG_MSG(x, msg) _Static_assert(!(x), msg)
| ^~~~~~~~~~~~~~
include/qemu/compiler.h:76:30: note: in expansion of macro
‘QEMU_BUILD_BUG_MSG’
76 | #define QEMU_BUILD_BUG_ON(x) QEMU_BUILD_BUG_MSG(x, "not
expecting: " #x)
| ^~~~~~~~~~~~~~~~~~
include/exec/cpu-all.h:440:1: note: in expansion of macro
‘QEMU_BUILD_BUG_ON’
440 | QEMU_BUILD_BUG_ON(offsetof(ArchCPU, env) != sizeof(CPUState));
| ^~~~~~~~~~~~~~~~~
ninja: build stopped: subcommand failed.