diff --git a/README b/README
index ba57dc5..a39420d 100644
--- a/README
+++ b/README
@@ -621,6 +621,14 @@ The following options need to be configured:
 		exists, unlike the similar options in the Linux kernel. Do not
 		set these options unless they apply!
 
+		CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
+		Enables workarounds for ARM Cortex-A8 errata 454179, 430973
+		and 621766. This is only necessary for ARM core revisions prior
+		to r3p2. Enabling those workarounds requires to enable the same
+		workarounds in the kernel, or it will cause multiple
+		segmentation faults. This is currently only effective on OMAP3.
+
 - Driver Model
 		Driver model is a new framework for devices in U-Boot
 		introduced in early 2014. U-Boot is being progressively
diff --git a/arch/arm/cpu/armv7/omap3/board.c b/arch/arm/cpu/armv7/omap3/board.c
index 90d6ae7..813f35b 100644
--- a/arch/arm/cpu/armv7/omap3/board.c
+++ b/arch/arm/cpu/armv7/omap3/board.c
@@ -246,8 +246,10 @@ void s_init(void)
 
 	try_unlock_memory();
 
+#ifdef CONFIG_SYS_ARM_CORTEXA8_ERRATA
 	/* Errata workarounds */
 	omap3_setup_aux_cr();
+#endif
 
 #ifndef CONFIG_SYS_L2CACHE_OFF
 	/* Invalidate L2-cache from secure mode */
diff --git a/include/configs/am3517_crane.h b/include/configs/am3517_crane.h
index 09ee10c..2b98c8b 100644
--- a/include/configs/am3517_crane.h
+++ b/include/configs/am3517_crane.h
@@ -31,6 +31,8 @@
 #define CONFIG_DISPLAY_CPUINFO		1
 #define CONFIG_DISPLAY_BOARDINFO	1
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/am3517_evm.h b/include/configs/am3517_evm.h
index 190ef0e..63dda70 100644
--- a/include/configs/am3517_evm.h
+++ b/include/configs/am3517_evm.h
@@ -31,6 +31,8 @@
 #define CONFIG_DISPLAY_CPUINFO		1
 #define CONFIG_DISPLAY_BOARDINFO	1
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/cm_t35.h b/include/configs/cm_t35.h
index b2a9f35..150b419 100644
--- a/include/configs/cm_t35.h
+++ b/include/configs/cm_t35.h
@@ -38,6 +38,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/cm_t3517.h b/include/configs/cm_t3517.h
index 918032b..ff80e12 100644
--- a/include/configs/cm_t3517.h
+++ b/include/configs/cm_t3517.h
@@ -38,6 +38,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/dig297.h b/include/configs/dig297.h
index c8739ed..f396a2e 100644
--- a/include/configs/dig297.h
+++ b/include/configs/dig297.h
@@ -44,6 +44,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/mcx.h b/include/configs/mcx.h
index 26eb220..c353505 100644
--- a/include/configs/mcx.h
+++ b/include/configs/mcx.h
@@ -43,6 +43,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/nokia_rx51.h b/include/configs/nokia_rx51.h
index 46fc91e..8400aa6 100644
--- a/include/configs/nokia_rx51.h
+++ b/include/configs/nokia_rx51.h
@@ -52,6 +52,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/omap3_evm_common.h b/include/configs/omap3_evm_common.h
index 8885e17..edf8f48 100644
--- a/include/configs/omap3_evm_common.h
+++ b/include/configs/omap3_evm_common.h
@@ -21,6 +21,8 @@
 #define CONFIG_OMAP3_EVM		/* This is a OMAP3 EVM */
 #define CONFIG_TWL4030_POWER		/* with TWL4030 PMIC */
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /*
  * Clock related definitions
  */
diff --git a/include/configs/omap3_logic.h b/include/configs/omap3_logic.h
index aeb385f..0389e30 100644
--- a/include/configs/omap3_logic.h
+++ b/include/configs/omap3_logic.h
@@ -32,6 +32,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/omap3_mvblx.h b/include/configs/omap3_mvblx.h
index bf1d34d..535943c 100644
--- a/include/configs/omap3_mvblx.h
+++ b/include/configs/omap3_mvblx.h
@@ -35,6 +35,8 @@
 #define CONFIG_DISPLAY_CPUINFO		1
 #define CONFIG_DISPLAY_BOARDINFO	1
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/omap3_pandora.h b/include/configs/omap3_pandora.h
index 45feeb5..184d63f 100644
--- a/include/configs/omap3_pandora.h
+++ b/include/configs/omap3_pandora.h
@@ -29,6 +29,8 @@
 #define CONFIG_DISPLAY_CPUINFO		1
 #define CONFIG_DISPLAY_BOARDINFO	1
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/omap3_sdp3430.h b/include/configs/omap3_sdp3430.h
index ac307eb..8a7617a 100644
--- a/include/configs/omap3_sdp3430.h
+++ b/include/configs/omap3_sdp3430.h
@@ -41,6 +41,8 @@
 #define CONFIG_DISPLAY_CPUINFO		1
 #define CONFIG_DISPLAY_BOARDINFO	1
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/omap3_zoom1.h b/include/configs/omap3_zoom1.h
index c5d742c..0b0016e 100644
--- a/include/configs/omap3_zoom1.h
+++ b/include/configs/omap3_zoom1.h
@@ -38,6 +38,8 @@
 #define CONFIG_DISPLAY_CPUINFO		1
 #define CONFIG_DISPLAY_BOARDINFO	1
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 #define CONFIG_MISC_INIT_R
 
 #define CONFIG_REVISION_TAG		1
diff --git a/include/configs/tam3517-common.h b/include/configs/tam3517-common.h
index 9fbe68a..7ade643 100644
--- a/include/configs/tam3517-common.h
+++ b/include/configs/tam3517-common.h
@@ -33,6 +33,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/tao3530.h b/include/configs/tao3530.h
index 7d2c0d2..9d123b1 100644
--- a/include/configs/tao3530.h
+++ b/include/configs/tao3530.h
@@ -35,6 +35,8 @@
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/ti_omap3_common.h b/include/configs/ti_omap3_common.h
index 840e108..0b06593 100644
--- a/include/configs/ti_omap3_common.h
+++ b/include/configs/ti_omap3_common.h
@@ -25,6 +25,8 @@
 /* The chip has SDRC controller */
 #define CONFIG_SDRC
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK			26000000	/* Clock output from T2 */
 #define V_SCLK			(V_OSCK >> 1)
diff --git a/include/configs/tricorder.h b/include/configs/tricorder.h
index 36621a5..f1f1ae8 100644
--- a/include/configs/tricorder.h
+++ b/include/configs/tricorder.h
@@ -43,6 +43,8 @@
 #define CONFIG_SILENT_CONSOLE
 #define CONFIG_ZERO_BOOTDELAY_CHECK
 
+#define CONFIG_SYS_ARM_CORTEXA8_ERRATA
+
 /* Clock Defines */
 #define V_OSCK				26000000 /* Clock output from T2 */
 #define V_SCLK				(V_OSCK >> 1)
