target/arm: Get IL bit correct for v7 syndrome values
authorPeter Maydell <peter.maydell@linaro.org>
Wed, 24 Oct 2018 06:50:18 +0000 (07:50 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Wed, 24 Oct 2018 06:51:36 +0000 (07:51 +0100)
commit2ed08180db096ea5e44573529b85e09b1ed10b08
tree362f56c4e983d26ab6cc83ff2577ec41950392bd
parent64b91e3f890a8c221b65c6820a5ee39107ee40f5
target/arm: Get IL bit correct for v7 syndrome values

For the v7 version of the Arm architecture, the IL bit in
syndrome register values where the field is not valid was
defined to be UNK/SBZP. In v8 this is RES1, which is what
QEMU currently implements. Handle the desired v7 behaviour
by squashing the IL bit for the affected cases:
 * EC == EC_UNCATEGORIZED
 * prefetch aborts
 * data aborts where ISV is 0

(The fourth case listed in the v8 Arm ARM DDI 0487C.a in
section G7.2.70, "illegal state exception", can't happen
on a v7 CPU.)

This deals with a corner case noted in a comment.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 20181012144235.19646-10-peter.maydell@linaro.org
target/arm/helper.c
target/arm/internals.h