diff options
author | Peter Maydell | 2020-10-19 17:12:53 +0200 |
---|---|---|
committer | Peter Maydell | 2020-10-20 17:12:01 +0200 |
commit | 5d2555a1fe7370feeb1efbbf276a653040910017 (patch) | |
tree | f072bb9b945e67ae629aeb2ae7f70b8dda1b6ec2 /target/arm/cpu.h | |
parent | decodetree: Fix codegen for non-overlapping group inside overlapping group (diff) | |
download | qemu-5d2555a1fe7370feeb1efbbf276a653040910017.tar.gz qemu-5d2555a1fe7370feeb1efbbf276a653040910017.tar.xz qemu-5d2555a1fe7370feeb1efbbf276a653040910017.zip |
target/arm: Implement v8.1M NOCP handling
From v8.1M, disabled-coprocessor handling changes slightly:
* coprocessors 8, 9, 14 and 15 are also governed by the
cp10 enable bit, like cp11
* an extra range of instruction patterns is considered
to be inside the coprocessor space
We previously marked these up with TODO comments; implement the
correct behaviour.
Unfortunately there is no ID register field which indicates this
behaviour. We could in theory test an unrelated ID register which
indicates guaranteed-to-be-in-v8.1M behaviour like ID_ISAR0.CmpBranch
>= 3 (low-overhead-loops), but it seems better to simply define a new
ARM_FEATURE_V8_1M feature flag and use it for this and other
new-in-v8.1M behaviour that isn't identifiable from the ID registers.
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20201019151301.2046-3-peter.maydell@linaro.org
Diffstat (limited to 'target/arm/cpu.h')
-rw-r--r-- | target/arm/cpu.h | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/target/arm/cpu.h b/target/arm/cpu.h index cfff1b5c8f..74392fa029 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -1985,6 +1985,7 @@ enum arm_features { ARM_FEATURE_VBAR, /* has cp15 VBAR */ ARM_FEATURE_M_SECURITY, /* M profile Security Extension */ ARM_FEATURE_M_MAIN, /* M profile Main Extension */ + ARM_FEATURE_V8_1M, /* M profile extras only in v8.1M and later */ }; static inline int arm_feature(CPUARMState *env, int feature) |