|
@@ -75,6 +75,7 @@ early_board_init_ret:
|
|
|
jmp car_init
|
|
|
.globl car_init_ret
|
|
|
car_init_ret:
|
|
|
+#ifndef CONFIG_HAVE_FSP
|
|
|
/*
|
|
|
* We now have CONFIG_SYS_CAR_SIZE bytes of Cache-As-RAM (or SRAM,
|
|
|
* or fully initialised SDRAM - we really don't care which)
|
|
@@ -95,6 +96,12 @@ car_init_ret:
|
|
|
#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
|
|
|
|
|
|
/* Reserve space on stack for global data */
|
|
|
subl $GENERATED_GBL_DATA_SIZE, %esp
|
|
@@ -109,6 +116,13 @@ car_init_ret:
|
|
|
movl %esp, %edi
|
|
|
rep stosb
|
|
|
|
|
|
+#ifdef CONFIG_HAVE_FSP
|
|
|
+ /* Store HOB list */
|
|
|
+ movl %esp, %edx
|
|
|
+ addl $GD_HOB_LIST, %edx
|
|
|
+ movl %esi, (%edx)
|
|
|
+#endif
|
|
|
+
|
|
|
/* Setup first parameter to setup_gdt, pointer to global_data */
|
|
|
movl %esp, %eax
|
|
|
|