avr32: disable branch folding
authorAndreas Bießmann <biessmann@corscience.de>
Wed, 9 Jun 2010 12:13:45 +0000 (14:13 +0200)
committerWolfgang Denk <wd@denx.de>
Tue, 29 Jun 2010 20:34:11 +0000 (22:34 +0200)
Due to a hardware bug mentioned in latest AP7000 datasheet errata
(revision M from 09.09) branch folding is unreliable.
This patch disables CPUCR.FE bitfield as stated in datasheet.

Signed-off-by: Andreas Bießmann <biessmann@corscience.de>
arch/avr32/cpu/start.S

index d37a46eb18b654d4d986e8c1d246d5a1145507e3..99c9e06cb83682c56c7d3f9b59001bac6c33ce22 100644 (file)
 #define SYSREG_MMUCR_S_OFFSET  4
 
 #define SR_INIT (SYSREG_BIT(GM) | SYSREG_BIT(EM) | SYSREG_BIT(M0))
-#define CPUCR_INIT (SYSREG_BIT(BI) | SYSREG_BIT(BE)            \
-                   | SYSREG_BIT(FE) | SYSREG_BIT(RE)           \
-                   | SYSREG_BIT(IBE) | SYSREG_BIT(IEE))
+/* due to errata (unreliable branch folding) clear FE bit explicitly */
+#define CPUCR_INIT ((SYSREG_BIT(BI) | SYSREG_BIT(BE)   \
+                   | SYSREG_BIT(RE)   |  SYSREG_BIT(IBE)               \
+                   | SYSREG_BIT(IEE)) & ~SYSREG_BIT(FE))
 
        /*
         * To save some space, we use the same entry point for