diff options
author | Beata Michalska | 2019-11-21 01:08:43 +0100 |
---|---|---|
committer | Peter Maydell | 2019-12-16 11:46:35 +0100 |
commit | 0d57b49992200a926c4436eead97ecfc8cc710be (patch) | |
tree | 0e2ae1b8f481d7d1347ddf18d29bf716f7ded7f5 /target/arm/cpu.h | |
parent | migration: ram: Switch to ram block writeback (diff) | |
download | qemu-0d57b49992200a926c4436eead97ecfc8cc710be.tar.gz qemu-0d57b49992200a926c4436eead97ecfc8cc710be.tar.xz qemu-0d57b49992200a926c4436eead97ecfc8cc710be.zip |
target/arm: Add support for DC CVAP & DC CVADP ins
ARMv8.2 introduced support for Data Cache Clean instructions
to PoP (point-of-persistence) - DC CVAP and PoDP (point-of-deep-persistence)
- DV CVADP. Both specify conceptual points in a memory system where all writes
that are to reach them are considered persistent.
The support provided considers both to be actually the same so there is no
distinction between the two. If none is available (there is no backing store
for given memory) both will result in Data Cache Clean up to the point of
coherency. Otherwise sync for the specified range shall be performed.
Signed-off-by: Beata Michalska <beata.michalska@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20191121000843.24844-5-beata.michalska@linaro.org
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/cpu.h')
-rw-r--r-- | target/arm/cpu.h | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/target/arm/cpu.h b/target/arm/cpu.h index cebb3511a5..4106e4ae59 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -3618,6 +3618,16 @@ static inline bool isar_feature_aa64_frint(const ARMISARegisters *id) return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, FRINTTS) != 0; } +static inline bool isar_feature_aa64_dcpop(const ARMISARegisters *id) +{ + return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, DPB) != 0; +} + +static inline bool isar_feature_aa64_dcpodp(const ARMISARegisters *id) +{ + return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, DPB) >= 2; +} + static inline bool isar_feature_aa64_fp16(const ARMISARegisters *id) { /* We always set the AdvSIMD and FP fields identically wrt FP16. */ |