[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 00/17] target/arm: Reduce overhead of cpu_get_tb_
From: |
Richard Henderson |
Subject: |
[Qemu-devel] [PATCH v5 00/17] target/arm: Reduce overhead of cpu_get_tb_cpu_state |
Date: |
Tue, 20 Aug 2019 14:07:03 -0700 |
Changes since v4:
* Split patch 1 into 15 smaller patches.
* Cache the new DEBUG_TARGET_EL field.
* Split out m-profile hflags separately from a-profile 32-bit.
* Move around non-cached tb flags as well, avoiding repetitive
checks for m-profile or other mutually exclusive conditions.
I haven't officially re-run the performance test quoted in the
last patch, but I have eyeballed "perf top", and have dug into
the compiled code a bit, which resulted in a few of the new
cleanup patches (e.g. cs_base, arm_mmu_idx_el, and
arm_cpu_data_is_big_endian).
Changes since v3:
* Rebase.
* Do not cache XSCALE_CPAR now that it overlaps VECSTRIDE.
* Leave the new v7m bits as uncached. I haven't figured
out all of the ways fpccr is modified.
Changes since v2:
* Do not cache VECLEN, VECSTRIDE, VFPEN.
These variables come from VFP_FPSCR and VFP_FPEXC, not from
system control registers.
* Move HANDLER and STACKCHECK to rebuild_hflags_a32,
instead of building them in rebuild_hflags_common.
Changes since v1:
* Apparently I had started a last-minute API change, and failed to
covert all of the users, and also failed to re-test afterward.
* Retain assertions for --enable-debug-tcg.
Richard Henderson (17):
target/arm: Split out rebuild_hflags_common
target/arm: Split out rebuild_hflags_a64
target/arm: Split out rebuild_hflags_common_32
target/arm: Split arm_cpu_data_is_big_endian
target/arm: Split out rebuild_hflags_m32
target/arm: Reduce tests vs M-profile in cpu_get_tb_cpu_state
target/arm: Split out rebuild_hflags_a32
target/arm: Split out rebuild_hflags_aprofile
target/arm: Hoist XSCALE_CPAR, VECLEN, VECSTRIDE in
cpu_get_tb_cpu_state
target/arm: Simplify set of PSTATE_SS in cpu_get_tb_cpu_state
target/arm: Hoist computation of TBFLAG_A32.VFPEN
target/arm: Add arm_rebuild_hflags
target/arm: Split out arm_mmu_idx_el
target/arm: Hoist store to cs_base in cpu_get_tb_cpu_state
target/arm: Add HELPER(rebuild_hflags_{a32,a64,m32})
target/arm: Rebuild hflags at EL changes and MSR writes
target/arm: Rely on hflags correct in cpu_get_tb_cpu_state
target/arm/cpu.h | 84 +++++---
target/arm/helper.h | 4 +
target/arm/internals.h | 9 +
linux-user/syscall.c | 1 +
target/arm/cpu.c | 1 +
target/arm/helper-a64.c | 3 +
target/arm/helper.c | 383 ++++++++++++++++++++++++-------------
target/arm/machine.c | 1 +
target/arm/op_helper.c | 1 +
target/arm/translate-a64.c | 6 +-
target/arm/translate.c | 18 +-
11 files changed, 341 insertions(+), 170 deletions(-)
--
2.17.1
- [Qemu-devel] [PATCH v5 00/17] target/arm: Reduce overhead of cpu_get_tb_cpu_state,
Richard Henderson <=
- [Qemu-devel] [PATCH v5 01/17] target/arm: Split out rebuild_hflags_common, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 02/17] target/arm: Split out rebuild_hflags_a64, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 06/17] target/arm: Reduce tests vs M-profile in cpu_get_tb_cpu_state, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 03/17] target/arm: Split out rebuild_hflags_common_32, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 09/17] target/arm: Hoist XSCALE_CPAR, VECLEN, VECSTRIDE in cpu_get_tb_cpu_state, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 04/17] target/arm: Split arm_cpu_data_is_big_endian, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 14/17] target/arm: Hoist store to cs_base in cpu_get_tb_cpu_state, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 12/17] target/arm: Add arm_rebuild_hflags, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 13/17] target/arm: Split out arm_mmu_idx_el, Richard Henderson, 2019/08/20
- [Qemu-devel] [PATCH v5 16/17] target/arm: Rebuild hflags at EL changes and MSR writes, Richard Henderson, 2019/08/20