2010-05-29 07:09:12 +04:00
# 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 / p a g e . h >
# include < a s m / c a c h e . h >
# include < a s m / t h r e a d _ i n f o . h >
# include < h v / h y p e r v i s o r . h >
/* Text loads starting from the supervisor interrupt vector address. */
# define T E X T _ O F F S E T M E M _ S V _ I N T R P T
OUTPUT_ A R C H ( t i l e )
ENTRY( _ s t a r t )
jiffies = j i f f i e s _ 6 4 ;
PHDRS
{
intrpt1 P T _ L O A D ;
text P T _ L O A D ;
data P T _ L O A D ;
}
SECTIONS
{
/* Text is loaded with a different VA than data; start with text. */
# undef L O A D _ O F F S E T
# define L O A D _ O F F S E T T E X T _ O F F S E T
/* Interrupt vectors */
.intrpt1 ( LOAD_ O F F S E T ) : A T ( 0 ) / * p u t a t t h e s t a r t o f p h y s i c a l m e m o r y * /
{
_ text = . ;
_ stext = . ;
* ( .intrpt1 )
} : intrpt1 =0
/* Hypervisor call vectors */
# include " h v g l u e . l d s "
/* Now the real code */
. = ALIGN( 0 x20 0 0 0 ) ;
.text : AT ( A D D R ( . t e x t ) - L O A D _ O F F S E T ) {
2010-06-26 01:04:17 +04:00
HEAD_ T E X T
2010-05-29 07:09:12 +04:00
SCHED_ T E X T
LOCK_ T E X T
_ _ fix_ t e x t _ e n d = . ; /* tile-cpack won't rearrange before this */
TEXT_ T E X T
* ( .text . * )
* ( .coldtext * )
* ( .fixup )
* ( .gnu .warning )
2010-06-26 01:04:17 +04:00
} : text =0
2010-05-29 07:09:12 +04:00
_ etext = . ;
/* "Init" is divided into two areas with very different virtual addresses. */
INIT_ T E X T _ S E C T I O N ( P A G E _ S I Z E )
/* Now we skip back to PAGE_OFFSET for the data. */
. = ( . - TEXT_ O F F S E T + P A G E _ O F F S E T ) ;
# undef L O A D _ O F F S E T
# define L O A D _ O F F S E T P A G E _ O F F S E T
. = ALIGN( P A G E _ S I Z E ) ;
VMLINUX_ S Y M B O L ( _ s i n i t d a t a ) = . ;
2011-02-28 02:52:24 +03:00
INIT_ D A T A _ S E C T I O N ( 1 6 ) : d a t a =0
2011-01-25 16:26:50 +03:00
PERCPU( L 2 _ C A C H E _ B Y T E S , P A G E _ S I Z E )
2010-05-29 07:09:12 +04:00
. = ALIGN( P A G E _ S I Z E ) ;
VMLINUX_ S Y M B O L ( _ e i n i t d a t a ) = . ;
_ sdata = . ; /* Start of data section */
RO_ D A T A _ S E C T I O N ( P A G E _ S I Z E )
/* initially writeable, then read-only */
. = ALIGN( P A G E _ S I Z E ) ;
_ _ w1 d a t a _ b e g i n = . ;
.w1data : AT( A D D R ( . w1 d a t a ) - L O A D _ O F F S E T ) {
VMLINUX_ S Y M B O L ( _ _ w1 d a t a _ b e g i n ) = . ;
* ( .w1data )
VMLINUX_ S Y M B O L ( _ _ w1 d a t a _ e n d ) = . ;
}
RW_ D A T A _ S E C T I O N ( L 2 _ 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 = . ;
EXCEPTION_ T A B L E ( L 2 _ C A C H E _ B Y T E S )
NOTES
BSS_ S E C T I O N ( 8 , P A G E _ S I Z E , 1 )
_ end = . ;
STABS_ D E B U G
DWARF_ D E B U G
DISCARDS
}