[ARM] 5487/1: ARM errata: Stale prediction on replaced interworking branch

Previous thread: [ARM] pxa/zylonite: fix the issue of unused SDATA_IN_1 pin get AC97 not working by Linux Kernel Mailing List on Saturday, May 2, 2009 - 5:04 pm. (1 message)

Next thread: [ARM] pxa: make ads7846 on corgi and spitz to sync on HSYNC by Linux Kernel Mailing List on Saturday, May 2, 2009 - 5:04 pm. (1 message)
From: Linux Kernel Mailing List
Date: Saturday, May 2, 2009 - 5:04 pm

Gitweb:     http://git.kernel.org/linus/7ce236fcd6fd45b0441a2d49acb2ceb2de2e8a47
Commit:     7ce236fcd6fd45b0441a2d49acb2ceb2de2e8a47
Parent:     9cba3ccc8fe77b67aff2db8f5827d7cb752ce11f
Author:     Catalin Marinas <catalin.marinas@arm.com>
AuthorDate: Thu Apr 30 17:06:09 2009 +0100
Committer:  Russell King <rmk+kernel@arm.linux.org.uk>
CommitDate: Thu Apr 30 20:12:50 2009 +0100

    [ARM] 5487/1: ARM errata: Stale prediction on replaced interworking branch
    
    This patch adds the workaround for the 430973 Cortex-A8 (r1p0..r1p2)
    erratum. The BTAC/BTB is now flushed at every context switch.
    
    Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
    Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
---
 arch/arm/Kconfig      |   16 ++++++++++++++++
 arch/arm/mm/proc-v7.S |    8 ++++++++
 2 files changed, 24 insertions(+), 0 deletions(-)

diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index e28a76b..84e4816 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -749,6 +749,22 @@ config ARM_ERRATA_411920
 	  It does not affect the MPCore. This option enables the ARM Ltd.
 	  recommended workaround.
 
+config ARM_ERRATA_430973
+	bool "ARM errata: Stale prediction on replaced interworking branch"
+	depends on CPU_V7
+	help
+	  This option enables the workaround for the 430973 Cortex-A8
+	  (r1p0..r1p2) erratum. If a code sequence containing an ARM/Thumb
+	  interworking branch is replaced with another code sequence at the
+	  same virtual address, whether due to self-modifying code or virtual
+	  to physical address re-mapping, Cortex-A8 does not recover from the
+	  stale interworking branch prediction. This results in Cortex-A8
+	  executing the new code sequence in the incorrect ARM or Thumb state.
+	  The workaround enables the BTB/BTAC operations by setting ACTLR.IBE
+	  and also flushes the branch target cache at every context switch.
+	  Note that setting specific bits in the ACTLR register may not be
+	  available in non-secure ...
Previous thread: [ARM] pxa/zylonite: fix the issue of unused SDATA_IN_1 pin get AC97 not working by Linux Kernel Mailing List on Saturday, May 2, 2009 - 5:04 pm. (1 message)

Next thread: [ARM] pxa: make ads7846 on corgi and spitz to sync on HSYNC by Linux Kernel Mailing List on Saturday, May 2, 2009 - 5:04 pm. (1 message)