ARM: 7678/1: Work around faulty ISAR0 register in some Krait CPUs
authorStepan Moskovchenko <stepanm@codeaurora.org>
Mon, 18 Mar 2013 18:44:16 +0000 (19:44 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 22 Mar 2013 17:16:56 +0000 (17:16 +0000)
commit51d0b369c02c051c5930f90c29d40cd89cb52eb2
treea4e97e8a91422e3c76bb2f4b7836724430f3bfd9
parent8facfebc5a8e4f280ca56943767297a849fb4079
ARM: 7678/1: Work around faulty ISAR0 register in some Krait CPUs

Some early versions of the Krait CPU design incorrectly indicate
that they only support the UDIV and SDIV instructions in Thumb
mode when they actually support them in ARM and Thumb mode. It
seems that these CPUs follow the DDI0406B ARM ARM which has two
possible values for the divide instructions field, instead of the
DDI0406C document which has three possible values.

Work around this problem by checking the MIDR against Krait CPUs
with this faulty ISAR0 register and force the hwcaps to indicate
support in both modes.

[sboyd: Rewrote commit text to reflect real reasoning now that
we autodetect udiv/sdiv]

Signed-off-by: Stepan Moskovchenko <stepanm@codeaurora.org>
Acked-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/mm/proc-v7.S