2006-02-02 14:31:16 +00:00
# include < a s m / a s m - o f f s e t s . h >
2005-04-16 15:20:36 -07:00
# include < a s m - g e n e r i c / v m l i n u x . l d s . h >
2006-04-05 09:45:45 +01:00
# undef m i p s
2005-04-16 15:20:36 -07:00
# define m i p s m i p s
OUTPUT_ A R C H ( m i p s )
ENTRY( k e r n e l _ e n t r y )
jiffies = J I F F I E S ;
SECTIONS
{
# ifdef C O N F I G _ B O O T _ E L F 6 4
/* Read-only sections, merged into text segment: */
/* . = 0xc000000000000000; */
/* This is the value for an Origin kernel, taken from an IRIX kernel. */
/* . = 0xc00000000001c000; */
2005-09-03 15:56:17 -07:00
/ * Set t h e v a d d r f o r t h e t e x t s e g m e n t t o a v a l u e
2005-04-16 15:20:36 -07:00
> = 0 xa8 0 0 0 0 0 0 0 0 0 1 9 0 0 0 i f n o s y m m o n i s g o i n g t o c o n f i g u r e d
> = 0 xa8 0 0 0 0 0 0 0 0 3 0 0 0 0 0 o t h e r w i s e * /
/* . = 0xa800000000300000; */
/* . = 0xa800000000300000; */
. = 0 xffffffff8 0 3 0 0 0 0 0 ;
# endif
. = LOADADDR;
/* read-only */
_ text = . ; /* Text and read-only data */
.text : {
* ( .text )
SCHED_ T E X T
LOCK_ T E X T
* ( .fixup )
* ( .gnu .warning )
} = 0
_ etext = . ; /* End of text section */
. = ALIGN( 1 6 ) ; /* Exception table */
_ _ start_ _ _ e x _ t a b l e = . ;
_ _ ex_ t a b l e : { * ( _ _ e x _ t a b l e ) }
_ _ stop_ _ _ e x _ t a b l e = . ;
_ _ start_ _ _ d b e _ t a b l e = . ; /* Exception table for data bus errors */
_ _ dbe_ t a b l e : { * ( _ _ d b e _ t a b l e ) }
_ _ stop_ _ _ d b e _ t a b l e = . ;
RODATA
/* writeable */
.data : { /* Data */
. = . + DATAOFFSET; /* for CONFIG_MAPPED_KERNEL */
2006-10-24 02:29:01 +01:00
/ *
* This A L I G N i s n e e d e d a s a w o r k a r o u n d f o r a b u g a g c c b u g u p t o 4 . 1 w h i c h
* limits t h e m a x i m u m a l i g n m e n t t o a t m o s t 3 2 k B a n d r e s u l t s i n t h e f o l l o w i n g
* warning :
*
* CC a r c h / m i p s / k e r n e l / i n i t _ t a s k . o
* arch/ m i p s / k e r n e l / i n i t _ t a s k . c : 3 0 : w a r n i n g : a l i g n m e n t o f ‘ i n i t _ t h r e a d _ u n i o n ’
* is g r e a t e r t h a n m a x i m u m o b j e c t f i l e a l i g n m e n t . U s i n g 3 2 7 6 8
* /
. = ALIGN( _ P A G E _ S I Z E ) ;
2005-04-16 15:20:36 -07:00
* ( .data .init_task )
* ( .data )
CONSTRUCTORS
}
_ gp = . + 0 x80 0 0 ;
.lit8 : { * ( .lit8 ) }
.lit4 : { * ( .lit4 ) }
/ * We w a n t t h e s m a l l d a t a s e c t i o n s t o g e t h e r , s o s i n g l e - i n s t r u c t i o n o f f s e t s
can a c c e s s t h e m a l l , a n d i n i t i a l i z e d d a t a a l l b e f o r e u n i n i t i a l i z e d , s o
we c a n s h o r t e n t h e o n - d i s k s e g m e n t s i z e . * /
.sdata : { * ( .sdata ) }
2006-02-02 14:31:16 +00:00
. = ALIGN( _ P A G E _ S I Z E ) ;
2005-04-16 15:20:36 -07:00
_ _ nosave_ b e g i n = . ;
.data_nosave : { * ( .data .nosave ) }
2006-02-02 14:31:16 +00:00
. = ALIGN( _ P A G E _ S I Z E ) ;
2005-04-16 15:20:36 -07:00
_ _ nosave_ e n d = . ;
. = ALIGN( 3 2 ) ;
.data .cacheline_aligned : { * ( .data .cacheline_aligned ) }
_ edata = . ; /* End of data section */
/* will be freed after init */
2006-02-02 14:31:16 +00:00
. = ALIGN( _ P A G E _ S I Z E ) ; /* Init code and data */
2005-04-16 15:20:36 -07:00
_ _ init_ b e g i n = . ;
.init .text : {
_ sinittext = . ;
* ( .init .text )
_ einittext = . ;
}
.init .data : { * ( .init .data ) }
. = ALIGN( 1 6 ) ;
_ _ setup_ s t a r t = . ;
.init .setup : { * ( .init .setup ) }
_ _ setup_ e n d = . ;
_ _ initcall_ s t a r t = . ;
.initcall .init : {
2006-10-27 11:41:44 -07:00
INITCALLS
2005-04-16 15:20:36 -07:00
}
_ _ initcall_ e n d = . ;
_ _ con_ i n i t c a l l _ s t a r t = . ;
.con_initcall .init : { * ( .con_initcall .init ) }
_ _ con_ i n i t c a l l _ e n d = . ;
SECURITY_ I N I T
2006-12-11 11:54:52 +00:00
/ * .exit .text is discarded a t r u n t i m e , n o t l i n k t i m e , t o d e a l w i t h
references f r o m . r o d a t a * /
.exit .text : { * ( .exit .text ) }
.exit .data : { * ( .exit .data ) }
2006-02-02 14:31:16 +00:00
. = ALIGN( _ P A G E _ S I Z E ) ;
2005-04-16 15:20:36 -07:00
_ _ initramfs_ s t a r t = . ;
.init .ramfs : { * ( .init .ramfs ) }
_ _ initramfs_ e n d = . ;
. = ALIGN( 3 2 ) ;
_ _ per_ c p u _ s t a r t = . ;
.data .percpu : { * ( .data .percpu ) }
_ _ per_ c p u _ e n d = . ;
2006-02-02 14:31:16 +00:00
. = ALIGN( _ P A G E _ S I Z E ) ;
2005-04-16 15:20:36 -07:00
_ _ init_ e n d = . ;
/* freed after init ends here */
_ _ bss_ s t a r t = . ; /* BSS */
.sbss : {
* ( .sbss )
* ( .scommon )
}
.bss : {
* ( .bss )
* ( COMMON)
}
_ _ bss_ s t o p = . ;
_ end = . ;
/* Sections to be discarded */
/ DISCARD/ : {
* ( .exitcall .exit )
/* ABI crap starts here */
* ( .comment )
* ( .MIPS .options )
* ( .note )
* ( .options )
* ( .pdr )
* ( .reginfo )
* ( .mdebug * )
}
/* This is the MIPS specific mdebug section. */
.mdebug : { * ( .mdebug ) }
2006-05-11 00:41:26 +09:00
STABS_ D E B U G
2006-05-10 15:36:04 +09:00
DWARF_ D E B U G
2005-04-16 15:20:36 -07:00
/* These must appear regardless of . */
.gptab .sdata : { * ( .gptab .data ) * ( .gptab .sdata ) }
.gptab .sbss : { * ( .gptab .bss ) * ( .gptab .sbss ) }
.note : { * ( .note ) }
}