2013-01-18 13:42:20 +04:00
/ *
* Copyright ( C ) 2 0 0 4 , 2 0 0 7 - 2 0 1 0 , 2 0 1 1 - 2 0 1 2 S y n o p s y s , I n c . ( w w w . s y n o p s y s . c o m )
*
* This p r o g r a m i s f r e e s o f t w a r e ; you can redistribute it and/or modify
* it u n d e r t h e t e r m s o f t h e G N U G e n e r a l P u b l i c L i c e n s e v e r s i o n 2 a s
* published b y t h e F r e e S o f t w a r e F o u n d a t i o n .
* /
# include < a s m - g e n e r i c / v m l i n u x . l d s . h >
# include < a s m / c a c h e . h >
# include < a s m / p a g e . h >
# include < a s m / t h r e a d _ i n f o . h >
OUTPUT_ A R C H ( a r c )
2015-10-09 08:56:12 +03:00
ENTRY( r e s _ s e r v i c e )
2013-01-18 13:42:20 +04:00
# ifdef C O N F I G _ C P U _ B I G _ E N D I A N
jiffies = j i f f i e s _ 6 4 + 4 ;
# else
jiffies = j i f f i e s _ 6 4 ;
# endif
SECTIONS
{
2013-01-18 13:42:25 +04:00
/ *
* ICCM s t a r t s a t 0 x80 0 0 _ 0 0 0 0 . S o i f k e r n e l i s r e l o c a t e d t o s o m e o t h e r
* address, m a k e s u r e p e r i p h e r a l a t 0 x8 z d o e s n ' t c l a s h w i t h I C C M
* Essentially v e c t o r i s a l s o i n I C C M .
* /
2013-01-18 13:42:20 +04:00
. = CONFIG_ L I N U X _ L I N K _ B A S E ;
_ int_ v e c _ b a s e _ l d s = . ;
.vector : {
* ( .vector )
. = ALIGN( P A G E _ S I Z E ) ;
}
2013-01-18 13:42:25 +04:00
# ifdef C O N F I G _ A R C _ H A S _ I C C M
.text .arcfp : {
* ( .text .arcfp )
. = ALIGN( C O N F I G _ A R C _ I C C M _ S Z * 1 0 2 4 ) ;
}
# endif
2013-01-18 13:42:20 +04:00
/ *
* The r e a s o n f o r h a v i n g a s e p e r a t e s u b s e c t i o n . i n i t . r a m f s i s t o
* prevent o b j u m p f r o m i n c l u d i n g i t i n k e r n e l d u m p s
*
* Reason f o r h a v i n g . i n i t . r a m f s a b o v e . i n i t i s t o m a k e s u r e t h a t t h e
* binary b l o b i s t u c k e d a w a y t o o n e s i d e , r e d u c i n g t h e d i s p l a c e m e n t
* between . i n i t . t e x t a n d . t e x t , a v o i d i n g a n y p o s s i b l e r e l o c a t i o n
* errors b e c a u s e o f c a l l s f r o m . i n i t . t e x t t o . t e x t
* Yes s u c h c a l l s d o e x i s t . e . g .
* decompress_ i n f l a t e . c : g u n z i p ( ) - > z l i b _ i n f l a t e _ w o r k s p a c e ( )
* /
_ _ init_ b e g i n = . ;
.init .ramfs : { INIT_ R A M _ F S }
. = ALIGN( P A G E _ S I Z E ) ;
_ stext = . ;
HEAD_ T E X T _ S E C T I O N
INIT_ T E X T _ S E C T I O N ( L 1 _ C A C H E _ B Y T E S )
/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */
.init .data : {
INIT_ D A T A
INIT_ S E T U P ( L 1 _ C A C H E _ B Y T E S )
INIT_ C A L L S
CON_ I N I T C A L L
SECURITY_ I N I T C A L L
}
2013-01-18 13:42:26 +04:00
.init .arch .info : {
_ _ arch_ i n f o _ b e g i n = . ;
* ( .arch .info .init )
_ _ arch_ i n f o _ e n d = . ;
}
2013-01-18 13:42:20 +04:00
PERCPU_ S E C T I O N ( L 1 _ C A C H E _ B Y T E S )
. = ALIGN( P A G E _ S I Z E ) ;
_ _ init_ e n d = . ;
.text : {
_ text = . ;
TEXT_ T E X T
SCHED_ T E X T
2016-10-08 03:02:55 +03:00
CPUIDLE_ T E X T
2013-01-18 13:42:20 +04:00
LOCK_ T E X T
KPROBES_ T E X T
* ( .fixup )
* ( .gnu .warning )
}
EXCEPTION_ T A B L E ( L 1 _ C A C H E _ B Y T E S )
_ etext = . ;
_ sdata = . ;
RO_ D A T A _ S E C T I O N ( P A G E _ S I Z E )
/ *
* 1 . this i s . d a t a e s s e n t i a l l y
* 2 . THREAD_ S I Z E f o r i n i t . t a s k , m u s t b e k e r n e l - s t k s z a l i g n e d
* /
RW_ D A T A _ S E C T I O N ( L 1 _ C A C H E _ B Y T E S , P A G E _ S I Z E , T H R E A D _ S I Z E )
_ edata = . ;
2014-04-17 15:43:26 +04:00
BSS_ S E C T I O N ( 4 , 4 , 4 )
2013-01-18 13:42:20 +04:00
2013-01-22 15:33:19 +04:00
# ifdef C O N F I G _ A R C _ D W 2 _ U N W I N D
. = ALIGN( P A G E _ S I Z E ) ;
2013-06-24 19:52:06 +04:00
.eh_frame : {
2013-01-22 15:33:19 +04:00
_ _ start_ u n w i n d = . ;
2013-06-24 19:52:06 +04:00
* ( .eh_frame )
2013-01-22 15:33:19 +04:00
_ _ end_ u n w i n d = . ;
}
# else
2013-06-24 19:52:06 +04:00
/ DISCARD/ : { * ( . e h _ f r a m e ) }
2013-01-22 15:33:19 +04:00
# endif
2013-01-18 13:42:20 +04:00
NOTES
. = ALIGN( P A G E _ S I Z E ) ;
_ end = . ;
STABS_ D E B U G
DISCARDS
.arcextmap 0 : {
* ( .gnu .linkonce .arcextmap . * )
* ( .arcextmap . * )
}
2013-01-22 15:33:19 +04:00
2013-05-25 12:33:25 +04:00
# ifndef C O N F I G _ D E B U G _ I N F O
2013-06-24 19:52:06 +04:00
/ DISCARD/ : { * ( . d e b u g _ f r a m e ) }
2013-05-25 12:33:25 +04:00
/ DISCARD/ : { * ( . d e b u g _ a r a n g e s ) }
/ DISCARD/ : { * ( . d e b u g _ p u b n a m e s ) }
/ DISCARD/ : { * ( . d e b u g _ i n f o ) }
/ DISCARD/ : { * ( . d e b u g _ a b b r e v ) }
/ DISCARD/ : { * ( . d e b u g _ l i n e ) }
/ DISCARD/ : { * ( . d e b u g _ s t r ) }
/ DISCARD/ : { * ( . d e b u g _ l o c ) }
/ DISCARD/ : { * ( . d e b u g _ m a c i n f o ) }
/ DISCARD/ : { * ( . d e b u g _ r a n g e s ) }
# endif
2013-01-22 15:33:19 +04:00
2013-01-18 13:42:25 +04:00
# ifdef C O N F I G _ A R C _ H A S _ D C C M
. = CONFIG_ A R C _ D C C M _ B A S E ;
_ _ arc_ d c c m _ b a s e = . ;
.data .arcfp : {
* ( .data .arcfp )
}
. = ALIGN( C O N F I G _ A R C _ D C C M _ S Z * 1 0 2 4 ) ;
# endif
2013-01-18 13:42:20 +04:00
}