@ -74,6 +74,16 @@ car_init_ret:
* We n o w h a v e C O N F I G _ S Y S _ C A R _ S I Z E b y t e s o f C a c h e - A s - R A M ( o r S R A M ,
* or f u l l y i n i t i a l i s e d S D R A M - w e r e a l l y d o n ' t c a r e w h i c h )
* starting a t C O N F I G _ S Y S _ C A R _ A D D R t o b e u s e d a s a t e m p o r a r y s t a c k
* and e a r l y m a l l o c a r e a .
*
* Stack g r o w s d o w n f r o m t o p o f C A R . W e h a v e :
*
* top- > C O N F I G _ S Y S _ C A R _ A D D R + C O N F I G _ S Y S _ C A R _ S I Z E
* global_ d a t a
* x8 6 g l o b a l d e s c r i p t o r t a b l e
* early m a l l o c a r e a
* stack
* bottom- > C O N F I G _ S Y S _ C A R _ A D D R
* /
/* Stack grows down from top of CAR */
@ -91,12 +101,16 @@ car_init_ret:
movl % e s p , % e d i
rep s t o s b
/* Setup first parameter to setup_gdt */
/* Setup first parameter to setup_gdt, pointer to global_data */
movl % e s p , % e a x
/* Reserve space for global descriptor table */
subl $ X 8 6 _ G D T _ S I Z E , % e s p
/* Align temporary global descriptor table to 16-byte boundary */
andl $ 0 x f f f f f f f0 , % e s p
movl % e s p , % e c x
# if d e f i n e d ( C O N F I G _ S Y S _ M A L L O C _ F _ L E N )
subl $ C O N F I G _ S Y S _ M A L L O C _ F _ L E N , % e s p
movl % e a x , % e d x
@ -108,14 +122,13 @@ car_init_ret:
andl $ 0 x f f f f f f f0 , % e s p
/* Set second parameter to setup_gdt */
movl % e s p , % e d x
movl % e c x , % e d x
/* Setup global descriptor table so gd->xyz works */
call s e t u p _ g d t
/* Set parameter to board_init_f() to boot flags */
xorl % e a x , % e a x
movw % b x , % a x
/* Enter, U-boot! */
call b o a r d _ i n i t _ f