2011-10-04 18:54:51 +04:00
/ *
* ld s c r i p t f o r t h e c6 x k e r n e l
*
* Copyright ( C ) 2 0 1 0 , 2 0 1 1 T e x a s I n s t r u m e n t s I n c o r p o r a t e d
* Mark S a l t e r < m s a l t e r @redhat.com>
* /
# 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 / t h r e a d _ i n f o . h >
# include < a s m / p a g e . h >
ENTRY( _ c _ i n t 0 0 )
# if d e f i n e d ( 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
# define R E A D O N L Y _ S E G M E N T _ S T A R T \
. = PAGE_ O F F S E T ;
# define R E A D W R I T E _ S E G M E N T _ S T A R T \
. = ALIGN( 1 2 8 ) ; \
_ data_ l m a = . ;
SECTIONS
{
/ *
* Start k e r n e l r e a d o n l y s e g m e n t
* /
READONLY_ S E G M E N T _ S T A R T
.vectors :
{
_ vectors_ s t a r t = . ;
* ( .vectors )
. = ALIGN( 0 x40 0 ) ;
_ vectors_ e n d = . ;
}
/ *
* This s e c t i o n c o n t a i n s d a t a w h i c h m a y b e s h a r e d w i t h o t h e r
* cores. I t n e e d s t o b e a f i x e d o f f s e t f r o m P A G E _ O F F S E T
* regardless o f k e r n e l c o n f i g u r a t i o n .
* /
.virtio_ipc_dev :
{
* ( .virtio_ipc_dev )
}
. = ALIGN( P A G E _ S I Z E ) ;
2013-07-04 02:03:35 +04:00
_ _ init_ b e g i n = . ;
2011-10-04 18:54:51 +04:00
.init :
{
_ sinittext = . ;
HEAD_ T E X T
INIT_ T E X T
_ einittext = . ;
}
INIT_ D A T A _ S E C T I O N ( 1 6 )
PERCPU_ S E C T I O N ( 1 2 8 )
. = ALIGN( P A G E _ S I Z E ) ;
_ _ init_ e n d = . ;
.text :
{
_ text = . ;
2013-07-04 02:03:35 +04:00
_ stext = . ;
2011-10-04 18:54:51 +04:00
TEXT_ T E X T
SCHED_ T E X T
2016-10-08 03:02:55 +03:00
CPUIDLE_ T E X T
2011-10-04 18:54:51 +04:00
LOCK_ T E X T
IRQENTRY_ T E X T
2016-03-26 00:22:05 +03:00
SOFTIRQENTRY_ T E X T
2011-10-04 18:54:51 +04:00
KPROBES_ T E X T
* ( .fixup )
* ( .gnu .warning )
}
EXCEPTION_ T A B L E ( 1 6 )
NOTES
RO_ D A T A _ S E C T I O N ( P A G E _ S I Z E )
.const :
{
* ( .const .const . * .gnu .linkonce .r . * )
* ( .switch )
}
. = ALIGN ( 8 ) ;
_ _ fdt_ b l o b : A T ( A D D R ( _ _ f d t _ b l o b ) - L O A D _ O F F S E T )
{
_ fdt_ s t a r t = . ; /* place for fdt blob */
* ( _ _ fdt_ b l o b ) ; /* Any link-placed DTB */
BYTE( 0 ) ; /* section always has contents */
. = _ fdt_ s t a r t + 0 x40 0 0 ; /* Pad up to 16kbyte */
_ fdt_ e n d = . ;
}
_ etext = . ;
/ *
* Start k e r n e l r e a d - w r i t e s e g m e n t .
* /
READWRITE_ S E G M E N T _ S T A R T
_ sdata = . ;
.fardata : AT( A D D R ( . f a r d a t a ) - L O A D _ O F F S E T )
{
INIT_ T A S K _ D A T A ( T H R E A D _ S I Z E )
NOSAVE_ D A T A
PAGE_ A L I G N E D _ D A T A ( P A G E _ S I Z E )
CACHELINE_ A L I G N E D _ D A T A ( 1 2 8 )
READ_ M O S T L Y _ D A T A ( 1 2 8 )
DATA_ D A T A
CONSTRUCTORS
* ( .data1 )
* ( .fardata .fardata . * )
* ( .data .debug_bpt )
}
.neardata ALIGN( 8 ) : A T ( A D D R ( . n e a r d a t a ) - L O A D _ O F F S E T )
{
* ( .neardata2 .neardata2 . * .gnu .linkonce .s2 . * )
* ( .neardata .neardata . * .gnu .linkonce .s . * )
. = ALIGN( 8 ) ;
}
_ edata = . ;
_ _ bss_ s t a r t = . ;
SBSS( 8 )
BSS( 8 )
.far :
{
. = ALIGN( 8 ) ;
* ( .dynfar )
* ( .far .far . * .gnu .linkonce .b . * )
. = ALIGN( 8 ) ;
}
_ _ bss_ s t o p = . ;
_ end = . ;
DWARF_ D E B U G
/ DISCARD/ :
{
EXIT_ T E X T
EXIT_ D A T A
EXIT_ C A L L
* ( .discard )
* ( .discard . * )
* ( .interp )
}
}