[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH 0/9] Collapse CPUNegativeOffsetState into CPUState
From: |
Anton Johansson |
Subject: |
[PATCH 0/9] Collapse CPUNegativeOffsetState into CPUState |
Date: |
Fri, 30 Jun 2023 14:25:42 +0200 |
CPUNegativeOffsetState is a struct placed immediately before
CPUArchState in the ArchCPU struct. Its purpose is to ensure that
certain fields (CPUTLBDescFast, IcountDecr) lay within a small negative
offset of CPUArchState in memory. This is desired for better
code-generation on arm[32|64] and riscv hosts which has addressing
modes with 12- and 11 bits of displacement respectively.
This patchset removes CPUNegativeOffsetState, moves its fields to
CPUState, and statically asserts that the offset to the fields above
is expressable in 11 bits of displacement ( >= -(1 << 11) ). In order
to achieve this the TARGET_PAGE_ENTRY_EXTRA macro in CPUTLBEntryFull
had to be replaced with a union to make CPUTLB target independent.
The motivation for this patchset is twofold:
1. Parts of the codebase that previously depended on CPUArchState
to access either CPUTLB or IcountDecr now only depend on the
target-agnostic CPUState. This is a step towards building
accel/ once for system- and once for user-mode.
2. Targets no longer have to define a CPUNegativeOffsetState
member of ArchCPU, and QEMU will fail to compile if CPUTLB
and IcountDecr drift too far from CPUArchState.
Patches will follow that convert accel/tcg/cputlb.c and
accel/tcg/user-exec.c away from CPUArchState.
Anton Johansson (9):
target/arm: Replace TARGET_PAGE_ENTRY_EXTRA
include: Move MMUAccessType to tlb-common.h
include/exec: Move CPUTLB and friends to tlb-common.h
include/hw: introduce CPU_MAX_NEGATIVE_ENV_OFFSET
accel: Move CPUTLB to CPUState and assert offset
Move IcountDecr to CPUState and assert offset
include/exec: Remove [cpu|env]_neg() functions
target: Remove CPUNegativeOffsetState field from ArchCPU
include/exec: Remove CPUNegativeOffsetState
include/exec/cpu-all.h | 28 +-----
include/exec/cpu-defs.h | 141 ----------------------------
include/exec/exec-all.h | 2 +-
include/exec/tlb-common.h | 153 +++++++++++++++++++++++++++++++
include/hw/core/cpu.h | 27 ++++--
target/alpha/cpu.h | 1 -
target/arm/cpu-param.h | 12 ---
target/arm/cpu.h | 1 -
target/avr/cpu.h | 1 -
target/cris/cpu.h | 1 -
target/hexagon/cpu.h | 1 -
target/hppa/cpu.h | 1 -
target/i386/cpu.h | 1 -
target/loongarch/cpu.h | 1 -
target/m68k/cpu.h | 1 -
target/microblaze/cpu.h | 1 -
target/mips/cpu.h | 3 +-
target/nios2/cpu.h | 1 -
target/openrisc/cpu.h | 1 -
target/ppc/cpu.h | 1 -
target/riscv/cpu.h | 1 -
target/rx/cpu.h | 1 -
target/s390x/cpu.h | 1 -
target/sh4/cpu.h | 1 -
target/sparc/cpu.h | 1 -
target/tricore/cpu.h | 1 -
target/xtensa/cpu.h | 3 +-
accel/tcg/cpu-exec.c | 14 +--
accel/tcg/tcg-accel-ops-icount.c | 6 +-
accel/tcg/tcg-accel-ops.c | 2 +-
accel/tcg/translate-all.c | 19 +++-
accel/tcg/translator.c | 15 ++-
softmmu/icount.c | 2 +-
target/arm/ptw.c | 4 +-
target/arm/tcg/mte_helper.c | 2 +-
target/arm/tcg/sve_helper.c | 2 +-
target/arm/tcg/tlb_helper.c | 4 +-
target/arm/tcg/translate-a64.c | 2 +-
38 files changed, 222 insertions(+), 238 deletions(-)
--
2.41.0
- [PATCH 0/9] Collapse CPUNegativeOffsetState into CPUState,
Anton Johansson <=
- [PATCH 6/9] Move IcountDecr to CPUState and assert offset, Anton Johansson, 2023/06/30
- [PATCH 1/9] target/arm: Replace TARGET_PAGE_ENTRY_EXTRA, Anton Johansson, 2023/06/30
- [PATCH 2/9] include: Move MMUAccessType to tlb-common.h, Anton Johansson, 2023/06/30
- [PATCH 7/9] include/exec: Remove [cpu|env]_neg() functions, Anton Johansson, 2023/06/30
- [PATCH 3/9] include/exec: Move CPUTLB and friends to tlb-common.h, Anton Johansson, 2023/06/30
- [PATCH 4/9] include/hw: introduce CPU_MAX_NEGATIVE_ENV_OFFSET, Anton Johansson, 2023/06/30
- [PATCH 9/9] include/exec: Remove CPUNegativeOffsetState, Anton Johansson, 2023/06/30
- [PATCH 8/9] target: Remove CPUNegativeOffsetState field from ArchCPU, Anton Johansson, 2023/06/30
- [PATCH 5/9] accel: Move CPUTLB to CPUState and assert offset, Anton Johansson, 2023/06/30