diff --git a/arch/i386/lib/board.c b/arch/i386/lib/board.c
index c13efc83f91c6a03bf3265f9d09ce28d3a597488..b33dd4278e2e5a3a6ad40ed2912f4849761d4b40 100644
--- a/arch/i386/lib/board.c
+++ b/arch/i386/lib/board.c
@@ -235,6 +235,14 @@ static int do_elf_reloc_fixups(void)
  */
 void board_init_f(ulong boot_flags)
 {
+	/* First stage CPU initialization */
+	if (cpu_init_f() != 0)
+		hang();
+
+	/* First stage Board initialization */
+	if (board_early_init_f() != 0)
+		hang();
+
 	if (env_init() != 0)
 		hang();
 
@@ -253,14 +261,6 @@ void board_init_f(ulong boot_flags)
 	if (calculate_relocation_address() != 0)
 		hang();
 
-	/* First stage CPU initialization */
-	if (cpu_init_f() != 0)
-		hang();
-
-	/* First stage Board initialization */
-	if (board_early_init_f() != 0)
-		hang();
-
 	/* Copy U-Boot into RAM */
 	if (copy_uboot_to_ram() != 0)
 		hang();