-
- /* Stack grows down from top of CAR */
- movl $(CONFIG_SYS_CAR_ADDR + CONFIG_SYS_CAR_SIZE), %esp
-
- /* Reserve space on stack for global data */
- subl $GENERATED_GBL_DATA_SIZE, %esp
-
- /* Align global data to 16-byte boundary */
- andl $0xfffffff0, %esp
-
- /* Zero the global data since it won't happen later */
- xorl %eax, %eax
- movl $GENERATED_GBL_DATA_SIZE, %ecx
- movl %esp, %edi
- rep stosb
-
- /* Setup first parameter to setup_gdt */
- movl %esp, %eax
-
- /* Reserve space for global descriptor table */
- subl $X86_GDT_SIZE, %esp
-
-#if defined(CONFIG_SYS_MALLOC_F_LEN)
- subl $CONFIG_SYS_MALLOC_F_LEN, %esp
- movl %eax, %edx
- addl $GD_MALLOC_BASE, %edx
- movl %esp, (%edx)
+ 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