Back to home page

LXR

 
 

    


0001 /* ld script to make FRV Linux kernel
0002  * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>;
0003  */
0004 OUTPUT_FORMAT("elf32-frv", "elf32-frv", "elf32-frv")
0005 OUTPUT_ARCH(frv)
0006 ENTRY(_start)
0007 
0008 #include <asm-generic/vmlinux.lds.h>
0009 #include <asm/processor.h>
0010 #include <asm/page.h>
0011 #include <asm/cache.h>
0012 #include <asm/thread_info.h>
0013 
0014 jiffies = jiffies_64 + 4;
0015 
0016 __page_offset = CONFIG_PAGE_OFFSET; /* start of area covered by struct pages */
0017 __kernel_image_start = __page_offset;   /* address at which kernel image resides */
0018 
0019 SECTIONS
0020 {
0021   . = __kernel_image_start;
0022 
0023   /* discardable initialisation code and data */
0024   . = ALIGN(PAGE_SIZE);         /* Init code and data */
0025   __init_begin = .;
0026 
0027   _sinittext = .;
0028   .init.text : {
0029     HEAD_TEXT
0030 #ifndef CONFIG_DEBUG_INFO
0031     INIT_TEXT
0032     EXIT_TEXT
0033     EXIT_DATA
0034     *(.exitcall.exit)
0035 #endif
0036   }
0037   _einittext = .;
0038 
0039   INIT_DATA_SECTION(8)
0040   PERCPU_SECTION(L1_CACHE_BYTES)
0041 
0042   . = ALIGN(PAGE_SIZE);
0043   __init_end = .;
0044 
0045   .trap : {
0046     /* trap table management - read entry-table.S before modifying */
0047     . = ALIGN(8192);
0048     __trap_tables = .;
0049     *(.trap.user)
0050     *(.trap.kernel)
0051     . = ALIGN(4096);
0052     *(.trap.break)
0053   }
0054 
0055   /* Text and read-only data */
0056   . = ALIGN(4);
0057   _text = .;
0058   _stext = .;
0059   .text : {
0060     *(.text..start)
0061     *(.text..entry)
0062     *(.text..break)
0063     *(.text..tlbmiss)
0064     TEXT_TEXT
0065     SCHED_TEXT
0066     CPUIDLE_TEXT
0067     LOCK_TEXT
0068 #ifdef CONFIG_DEBUG_INFO
0069     INIT_TEXT
0070     EXIT_TEXT
0071     *(.exitcall.exit)
0072 #endif
0073     *(.fixup)
0074     *(.gnu.warning)
0075     *(.exitcall.exit)
0076     } = 0x9090
0077 
0078   _etext = .;           /* End of text section */
0079 
0080   RODATA
0081 
0082   .rodata : {
0083     *(.trap.vector)
0084 
0085     /* this clause must not be modified - the ordering and adjacency are imperative */
0086     __trap_fixup_tables = .;
0087     *(.trap.fixup.user .trap.fixup.kernel)
0088 
0089     }
0090 
0091   EXCEPTION_TABLE(8)
0092 
0093   _sdata = .;
0094   .data : {         /* Data */
0095     INIT_TASK_DATA(THREAD_SIZE)
0096     CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES)
0097     DATA_DATA
0098     *(.data.*)
0099     EXIT_DATA
0100     CONSTRUCTORS
0101     }
0102 
0103   _edata = .;           /* End of data section */
0104 
0105   /* GP section */
0106   . = ALIGN(L1_CACHE_BYTES);
0107   _gp = . + 2048;
0108   PROVIDE (gp = _gp);
0109 
0110   .sdata : { *(.sdata .sdata.*) }
0111 
0112   /* BSS */
0113   . = ALIGN(L1_CACHE_BYTES);
0114   __bss_start = .;
0115 
0116   .sbss     : { *(.sbss .sbss.*) }
0117   .bss      : { *(.bss .bss.*) }
0118   .bss..stack   : { *(.bss) }
0119 
0120   __bss_stop = .;
0121   _end = . ;
0122   . = ALIGN(PAGE_SIZE);
0123   __kernel_image_end = .;
0124 
0125   STABS_DEBUG
0126   DWARF_DEBUG
0127 
0128   .comment 0 : { *(.comment) }
0129 
0130   DISCARDS
0131 }
0132 
0133 __kernel_image_size_no_bss = __bss_start - __kernel_image_start;