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)
commit120ecfafabec382c4feb79ff159ef42a39b6d33b
treea4e97e8a91422e3c76bb2f4b7836724430f3bfd9
parent8164f7af88d9ad3a757bd14f634b23997ee77f6b
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