- /* Reserve space on stack for global data */
- subl $GENERATED_GBL_DATA_SIZE, %esp
-
- /* Align global data to 16-byte boundary */
- andl $0xfffffff0, %esp
-
- /* Setup first parameter to memcpy() and setup_gdt() */
- movl %esp, %eax
-
- /* Setup second parameter to memcpy() */
- fs movl 0, %edx
-
- /* Set third parameter to memcpy() */
- movl $GENERATED_GBL_DATA_SIZE, %ecx
-
- /* Copy global data from CAR to SDRAM stack */
- call memcpy
-
- /* Reserve space for global descriptor table */
- subl $X86_GDT_SIZE, %esp
-
- /* Align global descriptor table to 16-byte boundary */
- andl $0xfffffff0, %esp
-
- /* Set second parameter to setup_gdt() */
- movl %esp, %edx
-
- /* Setup global descriptor table so gd->xyz works */
- call setup_gdt
-
- /* Set if we need to disable CAR */