Patch by Steven Scholz, 4 Apr 2005:
- remove all references to CONFIG_INIT_CRITICAL for ARM based boards
- introduce two new configuration options instead:
  CONFIG_SKIP_LOWLEVEL_INIT and CONFIG_SKIP_RELOCATE_UBOOT
diff --git a/CHANGELOG b/CHANGELOG
index 26a32ee..0d7519f 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -3,6 +3,11 @@
 ======================================================================
 
 * Patch by Steven Scholz, 04 Apr 2005:
+  - remove all references to CONFIG_INIT_CRITICAL for ARM based boards
+  - introduce two new configuration options instead:
+    CONFIG_SKIP_LOWLEVEL_INIT and CONFIG_SKIP_RELOCATE_UBOOT
+
+* Patch by Steven Scholz, 04 Apr 2005:
   Make sure that MDIO clock does not exceed 2.5 MHz on AT91
 
 * Fix timer code for ARM systems: make sure that udelay() does not
diff --git a/README b/README
index 5b73238..e74ce4c 100644
--- a/README
+++ b/README
@@ -2129,14 +2129,18 @@
 		This only takes effect if the memory commands are activated
 		globally (CFG_CMD_MEM).
 
-- CONFIG_INIT_CRITICAL
-		[ARM only] If this variable is NOT defined, then
-		certain critical initializations (like setting up the
-		memory controller) are omitted. Normally this
-		variable MUST be defined for all boards. The only
-		exception is when U-Boot is loaded (to RAM) by some
-		other boot loader or by a debugger which performs
-		these intializations itself.
+- CONFIG_SKIP_LOWLEVEL_INIT
+- CONFIG_SKIP_RELOCATE_UBOOT
+
+                [ARM only] If these variables are defined, then
+                certain low level initializations (like setting up
+                the memory controller) are omitted and/or U-Boot does
+                not relocate itself into RAM.
+                Normally these variables MUST NOT be defined. The
+                only exception is when U-Boot is loaded (to RAM) by
+                some other boot loader or by a debugger which
+                performs these intializations itself.
+
 
 Building the Software:
 ======================
diff --git a/board/ns9750dev/platform.S b/board/ns9750dev/platform.S
index 11f9aef..afcad15 100644
--- a/board/ns9750dev/platform.S
+++ b/board/ns9750dev/platform.S
@@ -34,7 +34,7 @@
 #include <version.h>
 
 #if defined(CONFIG_NS9750DEV)
-# ifdef CONFIG_INIT_CRITICAL
+# ifndef CONFIG_SKIP_LOWLEVEL_INIT
 #  include <./ns9750_sys.h>
 #  include <./ns9750_mem.h>
 # endif
@@ -74,7 +74,7 @@
 _CAS_LATENCY:
 	.word	0x00022000	@ for CAS2 latency
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 .globl platformsetup
 platformsetup:
 
@@ -295,4 +295,4 @@
 		 NS9750_SYS_AHB_MON_BATC_GEN_IRQ)
 _AHB_MONITOR_END:
 
-#endif /* CONFIG_INIT_CRITICAL */
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
diff --git a/cpu/arm1136/start.S b/cpu/arm1136/start.S
index 27fcc89..c3bf6e3 100644
--- a/cpu/arm1136/start.S
+++ b/cpu/arm1136/start.S
@@ -129,8 +129,11 @@
 	bl	cpy_clk_code		/* put dpll adjust code behind vectors */
 #endif
 	/* the mask ROM code should have PLL and others stable */
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl  cpu_init_crit
+#endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -147,6 +150,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/arm720t/start.S b/cpu/arm720t/start.S
index 0e15965..3695465 100644
--- a/cpu/arm720t/start.S
+++ b/cpu/arm720t/start.S
@@ -119,10 +119,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -150,6 +151,8 @@
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
 
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
+
 	/* Set up the stack						    */
 stack_setup:
 	ldr	r0, _TEXT_BASE		/* upper 128 KiB: relocated uboot   */
diff --git a/cpu/arm920t/start.S b/cpu/arm920t/start.S
index a7cabf8..afe654b 100644
--- a/cpu/arm920t/start.S
+++ b/cpu/arm920t/start.S
@@ -156,10 +156,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -176,6 +177,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/arm925t/start.S b/cpu/arm925t/start.S
index f74064b..2389259 100644
--- a/cpu/arm925t/start.S
+++ b/cpu/arm925t/start.S
@@ -164,10 +164,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl  cpu_init_crit
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -184,6 +185,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/arm926ejs/start.S b/cpu/arm926ejs/start.S
index cd728c5..d62940b 100644
--- a/cpu/arm926ejs/start.S
+++ b/cpu/arm926ejs/start.S
@@ -139,10 +139,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -159,6 +160,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/at91rm9200/lowlevel.S b/cpu/at91rm9200/lowlevel.S
index 5521e5d..05887ad 100644
--- a/cpu/at91rm9200/lowlevel.S
+++ b/cpu/at91rm9200/lowlevel.S
@@ -30,7 +30,7 @@
 #include <config.h>
 #include <version.h>
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 /*
  * some parameters for the board
  *
@@ -197,4 +197,4 @@
 	.word SDRAM
 	.word SDRAM_VAL
 	/* SMRDATA1 is 176 bytes long */
-#endif /* CONFIG_INIT_CRITICAL */
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
diff --git a/cpu/at91rm9200/start.S b/cpu/at91rm9200/start.S
index 89a0aa5..62315fe 100644
--- a/cpu/at91rm9200/start.S
+++ b/cpu/at91rm9200/start.S
@@ -115,7 +115,7 @@
 	orr     r0,r0,#0xd3 /* was 13 */
 	msr     cpsr,r0
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	/* scratch stack */
 /****	ldr 	r1, =0x00204000		****/
 	/* Insure word alignment */
@@ -141,7 +141,7 @@
 	orr	r0, r0, #0x00001000	@ set bit 12 (I) I-Cache
 	orr	r0, r0, #0xC0000000	@ set bits 31:30 (iA, nF)
 	mcr     p15, 0, r0, c1, c0, 0	@ write r0 in cp15 control register (cp15 r1)
-#endif /* CONFIG_INIT_CRITICAL */
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
 	/*
 	 * relocate exeception table
 	 */
@@ -158,9 +158,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl      cpu_init_crit
+#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -177,7 +179,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
-#endif /* CONFIG_INIT_CRITICAL */
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/ixp/start.S b/cpu/ixp/start.S
index 3b3c868..2726f65 100644
--- a/cpu/ixp/start.S
+++ b/cpu/ixp/start.S
@@ -261,6 +261,7 @@
 	orr	r0,r0,#0x13
 	msr	cpsr,r0
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -277,6 +278,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/lh7a40x/start.S b/cpu/lh7a40x/start.S
index 5dca773..fb748cf 100644
--- a/cpu/lh7a40x/start.S
+++ b/cpu/lh7a40x/start.S
@@ -145,10 +145,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -166,6 +167,7 @@
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	blt	copy_loop		/* a 'ble' here actually copies     */
 					/*   four bytes of bss              */
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/pxa/start.S b/cpu/pxa/start.S
index da753a1..a8cc080 100644
--- a/cpu/pxa/start.S
+++ b/cpu/pxa/start.S
@@ -108,10 +108,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit		/* we do sys-critical inits	    */
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -128,6 +129,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/s3c44b0/start.S b/cpu/s3c44b0/start.S
index fc7f592..7affe87 100644
--- a/cpu/s3c44b0/start.S
+++ b/cpu/s3c44b0/start.S
@@ -112,7 +112,7 @@
 	 * not when booting from ram!
 	 */
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit
 	/*
 	 * before relocating, we have to setup RAM timing
@@ -122,6 +122,7 @@
 	bl	lowlevel_init
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -151,6 +152,7 @@
 	stmia	r1!, {r3-r10}
 	cmp	r0, r2
 	ble	vector_copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/cpu/sa1100/start.S b/cpu/sa1100/start.S
index 08e41c7..431ee65 100644
--- a/cpu/sa1100/start.S
+++ b/cpu/sa1100/start.S
@@ -121,10 +121,11 @@
 	 * we do sys-critical inits only at reboot,
 	 * not when booting from ram!
 	 */
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 	bl	cpu_init_crit
 #endif
 
+#ifndef CONFIG_SKIP_RELOCATE_UBOOT
 relocate:				/* relocate U-Boot to RAM	    */
 	adr	r0, _start		/* r0 <- current position of code   */
 	ldr	r1, _TEXT_BASE		/* test if we run from flash or RAM */
@@ -141,6 +142,7 @@
 	stmia	r1!, {r3-r10}		/* copy to   target address [r1]    */
 	cmp	r0, r2			/* until source end addreee [r2]    */
 	ble	copy_loop
+#endif	/* CONFIG_SKIP_RELOCATE_UBOOT */
 
 	/* Set up the stack						    */
 stack_setup:
diff --git a/include/common.h b/include/common.h
index edb704d..625c389 100644
--- a/include/common.h
+++ b/include/common.h
@@ -586,4 +586,9 @@
 void	show_boot_progress (int status);
 #endif
 
+#ifdef CONFIG_INIT_CRITICAL
+#error CONFIG_INIT_CRITICAL is depracted!
+#error Read section CONFIG_SKIP_LOWLEVEL_INIT in README.
+#endif
+
 #endif	/* __COMMON_H_ */
diff --git a/include/configs/B2.h b/include/configs/B2.h
index b031826..e55858d 100644
--- a/include/configs/B2.h
+++ b/include/configs/B2.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/SX1.h b/include/configs/SX1.h
index 7c51a1b..6ed98b8 100644
--- a/include/configs/SX1.h
+++ b/include/configs/SX1.h
@@ -24,12 +24,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/VCMA9.h b/include/configs/VCMA9.h
index 2c664d5..bde12e1 100644
--- a/include/configs/VCMA9.h
+++ b/include/configs/VCMA9.h
@@ -30,12 +30,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/assabet.h b/include/configs/assabet.h
index a52d87d..1a69ebe 100644
--- a/include/configs/assabet.h
+++ b/include/configs/assabet.h
@@ -31,8 +31,6 @@
 
 #undef DEBUG
 
-#define CONFIG_INIT_CRITICAL
-
 /*
  * High Level Configuration Options
  * (easy to change)
diff --git a/include/configs/at91rm9200dk.h b/include/configs/at91rm9200dk.h
index d32ec34..6a246b6 100644
--- a/include/configs/at91rm9200dk.h
+++ b/include/configs/at91rm9200dk.h
@@ -25,12 +25,6 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 /* ARM asynchronous clock */
 #define AT91C_MAIN_CLOCK	179712000	/* from 18.432 MHz crystal (18432000 / 4 * 39) */
 #define AT91C_MASTER_CLOCK	59904000	/* peripheral clock (AT91C_MASTER_CLOCK / 3) */
@@ -44,7 +38,7 @@
 #define CONFIG_SETUP_MEMORY_TAGS 1
 #define CONFIG_INITRD_TAG	1
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 #define CFG_USE_MAIN_OSCILLATOR		1
 /* flash */
 #define MC_PUIA_VAL	0x00000000
@@ -74,7 +68,7 @@
 #define SDRC_MR_VAL2	0x00000003 /* Load Mode Register */
 #define SDRC_MR_VAL3	0x00000000 /* Normal Mode */
 #define SDRC_TR_VAL	0x000002E0 /* Write refresh rate */
-#endif	/* CONFIG_INIT_CRITICAL */
+#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 /*
  * Size of malloc() pool
  */
@@ -177,19 +171,19 @@
 #define CFG_ENV_SIZE			0x2000  /* 0x8000 */
 #else
 #define CFG_ENV_IS_IN_FLASH		1
-#ifdef CONFIG_INIT_CRITICAL
+#ifdef CONFIG_SKIP_LOWLEVEL_INIT
 #define CFG_ENV_ADDR			(PHYS_FLASH_1 + 0x60000)  /* after u-boot.bin */
 #define CFG_ENV_SIZE			0x10000 /* sectors are 64K here */
 #else
 #define CFG_ENV_ADDR			(PHYS_FLASH_1 + 0xe000)  /* between boot.bin and u-boot.bin.gz */
 #define CFG_ENV_SIZE			0x2000  /* 0x8000 */
-#endif	/* CONFIG_INIT_CRITICAL */
+#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 #endif	/* CFG_ENV_IS_IN_DATAFLASH */
 
 
 #define CFG_LOAD_ADDR		0x21000000  /* default load address */
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifdef CONFIG_SKIP_LOWLEVEL_INIT
 #define CFG_BOOT_SIZE		0x00 /* 0 KBytes */
 #define CFG_U_BOOT_BASE		PHYS_FLASH_1
 #define CFG_U_BOOT_SIZE		0x60000 /* 384 KBytes */
@@ -197,7 +191,7 @@
 #define CFG_BOOT_SIZE		0x6000 /* 24 KBytes */
 #define CFG_U_BOOT_BASE		(PHYS_FLASH_1 + 0x10000)
 #define CFG_U_BOOT_SIZE		0x10000 /* 64 KBytes */
-#endif	/* CONFIG_INIT_CRITICAL */
+#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 
 #define CFG_BAUDRATE_TABLE	{115200 , 19200, 38400, 57600, 9600 }
 
diff --git a/include/configs/cerf250.h b/include/configs/cerf250.h
index 6a136d5..6997c7a 100644
--- a/include/configs/cerf250.h
+++ b/include/configs/cerf250.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/cmc_pu2.h b/include/configs/cmc_pu2.h
index 96b7148..5e96e09 100644
--- a/include/configs/cmc_pu2.h
+++ b/include/configs/cmc_pu2.h
@@ -25,12 +25,6 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 /* ARM asynchronous clock */
 #define AT91C_MAIN_CLOCK	207360000	/* from 18.432 MHz crystal (18432000 / 4 * 45) */
 #define AT91C_MASTER_CLOCK	(AT91C_MAIN_CLOCK/3)	/* peripheral clock */
@@ -44,7 +38,7 @@
 #define CONFIG_SETUP_MEMORY_TAGS 1
 #define CONFIG_INITRD_TAG	1
 
-#ifdef CONFIG_INIT_CRITICAL
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
 #define CFG_USE_MAIN_OSCILLATOR		1
 /* flash */
 #define MC_PUIA_VAL	0x00000000
@@ -74,7 +68,7 @@
 #define SDRC_MR_VAL2	0x00000003 /* Load Mode Register */
 #define SDRC_MR_VAL3	0x00000000 /* Normal Mode */
 #define SDRC_TR_VAL	0x000002E0 /* Write refresh rate */
-#endif	/* CONFIG_INIT_CRITICAL */
+#endif	/* CONFIG_SKIP_LOWLEVEL_INIT */
 
 /*
  * Size of malloc() pool
diff --git a/include/configs/cradle.h b/include/configs/cradle.h
index ca7a97b..776e1d2 100644
--- a/include/configs/cradle.h
+++ b/include/configs/cradle.h
@@ -29,12 +29,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/csb226.h b/include/configs/csb226.h
index 0b2b251..f04102e 100644
--- a/include/configs/csb226.h
+++ b/include/configs/csb226.h
@@ -34,12 +34,6 @@
 #define DEBUG 1
 
 /*
- * If we are developing, we might want to start U-Boot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/dnp1110.h b/include/configs/dnp1110.h
index b14e35b..9ac2856 100644
--- a/include/configs/dnp1110.h
+++ b/include/configs/dnp1110.h
@@ -31,7 +31,8 @@
  * If we are developing, we might want to start armboot from ram
  * so we MUST NOT initialize critical regs like mem-timing ...
  */
-#undef CONFIG_INIT_CRITICAL
+#define CONFIG_SKIP_LOWLEVEL_INIT	1
+#undef  CONFIG_SKIP_RELOCATE_UBOOT
 
 /*
  * High Level Configuration Options
diff --git a/include/configs/ep7312.h b/include/configs/ep7312.h
index 41ad394..c6a028f 100644
--- a/include/configs/ep7312.h
+++ b/include/configs/ep7312.h
@@ -28,12 +28,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/evb4510.h b/include/configs/evb4510.h
index 9e0ed51..88c2c74 100644
--- a/include/configs/evb4510.h
+++ b/include/configs/evb4510.h
@@ -32,8 +32,8 @@
  *
  * Also swap the flash1 and flash2 addresses during debug.
  *
+ * #define CONFIG_SKIP_LOWLEVEL_INIT
  */
-#define CONFIG_INIT_CRITICAL
 
 /*
  * High Level Configuration Options
diff --git a/include/configs/gcplus.h b/include/configs/gcplus.h
index dbb8dec..b68a2dc 100644
--- a/include/configs/gcplus.h
+++ b/include/configs/gcplus.h
@@ -40,7 +40,8 @@
  * boot ROM leaves the MMU enabled when it passes control to U-Boot. So
  * we use lowlevel_init (CONFIG_INIT_CRITICAL) to remedy that problem.
  */
-#define CONFIG_INIT_CRITICAL
+#undef  CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_SKIP_RELOCATE_UBOOT	1
 
 /*
  * High Level Configuration Options
diff --git a/include/configs/impa7.h b/include/configs/impa7.h
index dbc951d..c187c54 100644
--- a/include/configs/impa7.h
+++ b/include/configs/impa7.h
@@ -28,12 +28,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/innokom.h b/include/configs/innokom.h
index a3d36a0..fce72e1 100644
--- a/include/configs/innokom.h
+++ b/include/configs/innokom.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start U-Boot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/ixdp425.h b/include/configs/ixdp425.h
index a8067f6..b0a80a3 100644
--- a/include/configs/ixdp425.h
+++ b/include/configs/ixdp425.h
@@ -37,12 +37,6 @@
  * U-boot generic defines start here.
  ***************************************************************/
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 #undef CONFIG_USE_IRQ                   /* we don't need IRQ/FIQ stuff */
 
 /*
diff --git a/include/configs/lart.h b/include/configs/lart.h
index 3c9895a..a00640b 100644
--- a/include/configs/lart.h
+++ b/include/configs/lart.h
@@ -28,12 +28,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/logodl.h b/include/configs/logodl.h
index b320a40..715ed74 100644
--- a/include/configs/logodl.h
+++ b/include/configs/logodl.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start U-Boot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/lpd7a400.h b/include/configs/lpd7a400.h
index 6f2c32c..d7d0460 100644
--- a/include/configs/lpd7a400.h
+++ b/include/configs/lpd7a400.h
@@ -23,12 +23,6 @@
 
 #define CONFIG_LPD7A400		/* Logic LH7A400 SDK */
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 #undef CONFIG_USE_IRQ
 
 /*
diff --git a/include/configs/lpd7a404.h b/include/configs/lpd7a404.h
index e6855fb..4002e68 100644
--- a/include/configs/lpd7a404.h
+++ b/include/configs/lpd7a404.h
@@ -23,12 +23,6 @@
 
 #define CONFIG_LPD7A404		/* Logic LH7A400 SDK */
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 #undef CONFIG_USE_IRQ
 
 /*
diff --git a/include/configs/lubbock.h b/include/configs/lubbock.h
index 536a175..9ac62c7 100644
--- a/include/configs/lubbock.h
+++ b/include/configs/lubbock.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/modnet50.h b/include/configs/modnet50.h
index 166aa11..067c846 100644
--- a/include/configs/modnet50.h
+++ b/include/configs/modnet50.h
@@ -28,12 +28,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start u-boot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/mx1ads.h b/include/configs/mx1ads.h
index f7ccea3..7f3dfd5 100644
--- a/include/configs/mx1ads.h
+++ b/include/configs/mx1ads.h
@@ -29,12 +29,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/mx1fs2.h b/include/configs/mx1fs2.h
index 61a3b29..7b4dc92 100644
--- a/include/configs/mx1fs2.h
+++ b/include/configs/mx1fs2.h
@@ -113,8 +113,6 @@
 #define PRECHARGE_CMD 0x910a8300
 #define AUTOREFRESH_CMD 0xa10a8300
 
-#define CONFIG_INIT_CRITICAL
-
 #define BUS32BIT_VERSION
 /*
  * SDRAM Memory Map
diff --git a/include/configs/ns9750dev.h b/include/configs/ns9750dev.h
index af39e2e..0b1541d 100644
--- a/include/configs/ns9750dev.h
+++ b/include/configs/ns9750dev.h
@@ -28,12 +28,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/omap1510inn.h b/include/configs/omap1510inn.h
index 552beed..016d3d8 100644
--- a/include/configs/omap1510inn.h
+++ b/include/configs/omap1510inn.h
@@ -27,12 +27,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/omap1610h2.h b/include/configs/omap1610h2.h
index 9b82215..c6ca689 100644
--- a/include/configs/omap1610h2.h
+++ b/include/configs/omap1610h2.h
@@ -27,12 +27,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/omap1610inn.h b/include/configs/omap1610inn.h
index c00976e..f28ede0 100644
--- a/include/configs/omap1610inn.h
+++ b/include/configs/omap1610inn.h
@@ -27,12 +27,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/omap5912osk.h b/include/configs/omap5912osk.h
index cd2dbf1..605563a 100644
--- a/include/configs/omap5912osk.h
+++ b/include/configs/omap5912osk.h
@@ -27,12 +27,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/omap730p2.h b/include/configs/omap730p2.h
index 1bdea6c..fda55cf 100644
--- a/include/configs/omap730p2.h
+++ b/include/configs/omap730p2.h
@@ -27,13 +27,6 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-
-#define CONFIG_INIT_CRITICAL
-
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
 
diff --git a/include/configs/pleb2.h b/include/configs/pleb2.h
index 9ba19c8..a6c2371 100644
--- a/include/configs/pleb2.h
+++ b/include/configs/pleb2.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/scb9328.h b/include/configs/scb9328.h
index 6cd9126..a4249c4 100644
--- a/include/configs/scb9328.h
+++ b/include/configs/scb9328.h
@@ -119,7 +119,6 @@
 
 #define PRECHARGE_CMD 0x910a8200
 #define AUTOREFRESH_CMD 0xa10a8200
-#define CONFIG_INIT_CRITICAL
 
 /*
  * SDRAM Memory Map
diff --git a/include/configs/shannon.h b/include/configs/shannon.h
index 8a4e370..572985b 100644
--- a/include/configs/shannon.h
+++ b/include/configs/shannon.h
@@ -28,16 +28,13 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-
-/*
- * we just run in non-critical mode now, because we use the Inferno-Loader to
- * bring us to live
+ * Since we use the Inferno-Loader to bring us to live,
+ * we skip the lowlevel init stuff.
+ * But U-Boot still relocates itself into RAM
  */
 #define CONFIG_INFERNO			/* we are using the inferno bootldr */
-#undef CONFIG_INIT_CRITICAL
+#define CONFIG_SKIP_LOWLEVEL_INIT	1
+#undef  CONFIG_SKIP_RELOCATE_UBOOT
 
 /*
  * High Level Configuration Options
diff --git a/include/configs/smdk2400.h b/include/configs/smdk2400.h
index f477575..a137f9d 100644
--- a/include/configs/smdk2400.h
+++ b/include/configs/smdk2400.h
@@ -31,12 +31,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/smdk2410.h b/include/configs/smdk2410.h
index 2a1cd77..7edec0d 100644
--- a/include/configs/smdk2410.h
+++ b/include/configs/smdk2410.h
@@ -30,12 +30,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/suzaku.h b/include/configs/suzaku.h
index 6fda7b9..1ee6be1 100644
--- a/include/configs/suzaku.h
+++ b/include/configs/suzaku.h
@@ -26,12 +26,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/trab.h b/include/configs/trab.h
index 2f59260..3ca0049 100644
--- a/include/configs/trab.h
+++ b/include/configs/trab.h
@@ -37,12 +37,6 @@
 #endif
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/wepep250.h b/include/configs/wepep250.h
index ca32efb..47251bb 100644
--- a/include/configs/wepep250.h
+++ b/include/configs/wepep250.h
@@ -23,12 +23,6 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 #define CONFIG_PXA250          1        /* this is an PXA250 CPU     */
 #define CONFIG_WEPEP250        1        /* config for wepep250 board */
 #undef  CONFIG_USE_IRQ                  /* don't need use IRQ/FIQ    */
diff --git a/include/configs/xaeniax.h b/include/configs/xaeniax.h
index 1177003..386ce05 100644
--- a/include/configs/xaeniax.h
+++ b/include/configs/xaeniax.h
@@ -37,16 +37,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
-#undef CONFIG_INIT_CRITICAL
-*/
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/xm250.h b/include/configs/xm250.h
index 1be7dd4..952f73b 100644
--- a/include/configs/xm250.h
+++ b/include/configs/xm250.h
@@ -29,12 +29,6 @@
 #define __CONFIG_H
 
 /*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
-/*
  * High Level Configuration Options
  * (easy to change)
  */
diff --git a/include/configs/xsengine.h b/include/configs/xsengine.h
index 6b15766..847e91a 100644
--- a/include/configs/xsengine.h
+++ b/include/configs/xsengine.h
@@ -28,12 +28,6 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
-/*
- * If we are developing, we might want to start armboot from ram
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#define CONFIG_INIT_CRITICAL
-
 /* High Level Configuration Options */
 #define CONFIG_PXA250			1		/* This is an PXA250 CPU    */
 #define CONFIG_XSENGINE			1