+ movl $(CONFIG_SYS_CAR_ADDR + CONFIG_SYS_CAR_SIZE - 4), %esp
+#ifdef CONFIG_DCACHE_RAM_MRC_VAR_SIZE
+ subl $CONFIG_DCACHE_RAM_MRC_VAR_SIZE, %esp
+#endif
+#else
+ /*
+ * When we get here after car_init(), esp points to a temporary stack
+ * and esi holds the HOB list address returned by the FSP.
+ */
+#endif
+ /* Set up global data */
+ mov %esp, %eax
+ call board_init_f_mem
+ mov %eax, %esp
+
+ /*
+ * Debug UART is available here although it may not be plumbed out
+ * to pins depending on the board. To use it:
+ *
+ * call debug_uart_init
+ * mov $'a', %eax
+ * call printch
+ */
+
+ /* Get address of global_data */
+ mov %fs:0, %edx
+#ifdef CONFIG_HAVE_FSP
+ /* Store the HOB list if we have one */
+ test %esi, %esi
+ jz skip_hob
+ movl %esi, GD_HOB_LIST(%edx)
+
+skip_hob:
+#else
+ /* Store table pointer */
+ movl %esi, GD_TABLE(%edx)
+#endif
+ /* Store BIST */
+ movl %ebp, GD_BIST(%edx)