2005-04-17 02:20:36 +04:00
/ * ld s c r i p t t o m a k e A R M L i n u x k e r n e l
* taken f r o m t h e i 3 8 6 v e r s i o n b y R u s s e l l K i n g
* Written b y M a r t i n M a r e s < m j @atrey.karlin.mff.cuni.cz>
* /
# include < a s m - g e n e r i c / v m l i n u x . l d s . h >
# include < l i n u x / c o n f i g . h >
2005-05-05 16:11:00 +04:00
# include < a s m / t h r e a d _ i n f o . h >
2005-04-17 02:20:36 +04:00
OUTPUT_ A R C H ( a r m )
ENTRY( s t e x t )
# ifndef _ _ A R M E B _ _
jiffies = j i f f i e s _ 6 4 ;
# else
jiffies = j i f f i e s _ 6 4 + 4 ;
# endif
SECTIONS
{
. = TEXTADDR;
.init : { /* Init code and data */
_ stext = . ;
_ sinittext = . ;
* ( .init .text )
_ einittext = . ;
_ _ proc_ i n f o _ b e g i n = . ;
* ( .proc .info )
_ _ proc_ i n f o _ e n d = . ;
_ _ arch_ i n f o _ b e g i n = . ;
* ( .arch .info )
_ _ arch_ i n f o _ e n d = . ;
_ _ tagtable_ b e g i n = . ;
2005-09-20 19:20:49 +04:00
* ( .taglist .init )
2005-04-17 02:20:36 +04:00
_ _ tagtable_ e n d = . ;
. = ALIGN( 1 6 ) ;
_ _ setup_ s t a r t = . ;
* ( .init .setup )
_ _ setup_ e n d = . ;
_ _ early_ b e g i n = . ;
* ( _ _ early_ p a r a m )
_ _ early_ e n d = . ;
_ _ initcall_ s t a r t = . ;
* ( .initcall1 .init )
* ( .initcall2 .init )
* ( .initcall3 .init )
* ( .initcall4 .init )
* ( .initcall5 .init )
* ( .initcall6 .init )
* ( .initcall7 .init )
_ _ initcall_ e n d = . ;
_ _ con_ i n i t c a l l _ s t a r t = . ;
* ( .con_initcall .init )
_ _ con_ i n i t c a l l _ e n d = . ;
_ _ security_ i n i t c a l l _ s t a r t = . ;
* ( .security_initcall .init )
_ _ security_ i n i t c a l l _ e n d = . ;
. = ALIGN( 3 2 ) ;
_ _ initramfs_ s t a r t = . ;
usr/ b u i l t - i n . o ( . i n i t . r a m f s )
_ _ initramfs_ e n d = . ;
. = ALIGN( 6 4 ) ;
_ _ per_ c p u _ s t a r t = . ;
* ( .data .percpu )
_ _ per_ c p u _ e n d = . ;
# ifndef C O N F I G _ X I P _ K E R N E L
_ _ init_ b e g i n = _ s t e x t ;
* ( .init .data )
. = ALIGN( 4 0 9 6 ) ;
_ _ init_ e n d = . ;
# endif
}
/ DISCARD/ : { / * E x i t c o d e a n d d a t a * /
* ( .exit .text )
* ( .exit .data )
* ( .exitcall .exit )
}
.text : { /* Real text segment */
_ text = . ; /* Text and read-only data */
* ( .text )
SCHED_ T E X T
LOCK_ T E X T
* ( .fixup )
* ( .gnu .warning )
* ( .rodata )
* ( .rodata . * )
* ( .glue_7 )
* ( .glue_7t )
* ( .got ) /* Global offset table */
}
. = ALIGN( 1 6 ) ;
_ _ ex_ t a b l e : { / * E x c e p t i o n t a b l e * /
_ _ start_ _ _ e x _ t a b l e = . ;
* ( _ _ ex_ t a b l e )
_ _ stop_ _ _ e x _ t a b l e = . ;
}
RODATA
_ etext = . ; /* End of text and rodata section */
# ifdef C O N F I G _ X I P _ K E R N E L
_ _ data_ l o c = A L I G N ( 4 ) ; /* location in binary */
. = DATAADDR;
# else
2005-05-05 16:11:00 +04:00
. = ALIGN( T H R E A D _ S I Z E ) ;
2005-04-17 02:20:36 +04:00
_ _ data_ l o c = . ;
# endif
.data : AT( _ _ d a t a _ l o c ) {
_ _ data_ s t a r t = . ; /* address in memory */
/ *
* first, t h e i n i t t a s k u n i o n , a l i g n e d
* to a n 8 1 9 2 b y t e b o u n d a r y .
* /
* ( .init .task )
# ifdef C O N F I G _ X I P _ K E R N E L
. = ALIGN( 4 0 9 6 ) ;
_ _ init_ b e g i n = . ;
* ( .init .data )
. = ALIGN( 4 0 9 6 ) ;
_ _ init_ e n d = . ;
# endif
. = ALIGN( 4 0 9 6 ) ;
_ _ nosave_ b e g i n = . ;
* ( .data .nosave )
. = ALIGN( 4 0 9 6 ) ;
_ _ nosave_ e n d = . ;
/ *
* then t h e c a c h e l i n e a l i g n e d d a t a
* /
. = ALIGN( 3 2 ) ;
* ( .data .cacheline_aligned )
/ *
* and t h e u s u a l d a t a s e c t i o n
* /
* ( .data )
CONSTRUCTORS
_ edata = . ;
}
.bss : {
_ _ bss_ s t a r t = . ; /* BSS */
* ( .bss )
* ( COMMON)
_ end = . ;
}
/* Stabs debugging sections. */
.stab 0 : { * ( .stab ) }
.stabstr 0 : { * ( .stabstr ) }
.stab .excl 0 : { * ( .stab .excl ) }
.stab .exclstr 0 : { * ( .stab .exclstr ) }
.stab .index 0 : { * ( .stab .index ) }
.stab .indexstr 0 : { * ( .stab .indexstr ) }
.comment 0 : { * ( .comment ) }
}
/* those must never be empty */
ASSERT( ( _ _ p r o c _ i n f o _ e n d - _ _ p r o c _ i n f o _ b e g i n ) , " m i s s i n g C P U s u p p o r t " )
ASSERT( ( _ _ a r c h _ i n f o _ e n d - _ _ a r c h _ i n f o _ b e g i n ) , " n o m a c h i n e r e c o r d d e f i n e d " )