1/* ld script to make FRV Linux kernel 2 * Written by Martin Mares <mj@atrey.karlin.mff.cuni.cz>; 3 */ 4OUTPUT_FORMAT("elf32-frv", "elf32-frv", "elf32-frv") 5OUTPUT_ARCH(frv) 6ENTRY(_start) 7 8#include <asm-generic/vmlinux.lds.h> 9#include <asm/processor.h> 10#include <asm/page.h> 11#include <asm/cache.h> 12#include <asm/thread_info.h> 13 14jiffies = jiffies_64 + 4; 15 16__page_offset = CONFIG_PAGE_OFFSET; /* start of area covered by struct pages */ 17__kernel_image_start = __page_offset; /* address at which kernel image resides */ 18 19SECTIONS 20{ 21 . = __kernel_image_start; 22 23 /* discardable initialisation code and data */ 24 . = ALIGN(PAGE_SIZE); /* Init code and data */ 25 __init_begin = .; 26 27 _sinittext = .; 28 .init.text : { 29 HEAD_TEXT 30#ifndef CONFIG_DEBUG_INFO 31 INIT_TEXT 32 EXIT_TEXT 33 EXIT_DATA 34 *(.exitcall.exit) 35#endif 36 } 37 _einittext = .; 38 39 INIT_DATA_SECTION(8) 40 PERCPU_SECTION(L1_CACHE_BYTES) 41 42 . = ALIGN(PAGE_SIZE); 43 __init_end = .; 44 45 .trap : { 46 /* trap table management - read entry-table.S before modifying */ 47 . = ALIGN(8192); 48 __trap_tables = .; 49 *(.trap.user) 50 *(.trap.kernel) 51 . = ALIGN(4096); 52 *(.trap.break) 53 } 54 55 /* Text and read-only data */ 56 . = ALIGN(4); 57 _text = .; 58 _stext = .; 59 .text : { 60 *(.text..start) 61 *(.text..entry) 62 *(.text..break) 63 *(.text..tlbmiss) 64 TEXT_TEXT 65 SCHED_TEXT 66 LOCK_TEXT 67#ifdef CONFIG_DEBUG_INFO 68 INIT_TEXT 69 EXIT_TEXT 70 *(.exitcall.exit) 71#endif 72 *(.fixup) 73 *(.gnu.warning) 74 *(.exitcall.exit) 75 } = 0x9090 76 77 _etext = .; /* End of text section */ 78 79 RODATA 80 81 .rodata : { 82 *(.trap.vector) 83 84 /* this clause must not be modified - the ordering and adjacency are imperative */ 85 __trap_fixup_tables = .; 86 *(.trap.fixup.user .trap.fixup.kernel) 87 88 } 89 90 EXCEPTION_TABLE(8) 91 92 _sdata = .; 93 .data : { /* Data */ 94 INIT_TASK_DATA(THREAD_SIZE) 95 CACHELINE_ALIGNED_DATA(L1_CACHE_BYTES) 96 DATA_DATA 97 *(.data.*) 98 EXIT_DATA 99 CONSTRUCTORS 100 } 101 102 _edata = .; /* End of data section */ 103 104 /* GP section */ 105 . = ALIGN(L1_CACHE_BYTES); 106 _gp = . + 2048; 107 PROVIDE (gp = _gp); 108 109 .sdata : { *(.sdata .sdata.*) } 110 111 /* BSS */ 112 . = ALIGN(L1_CACHE_BYTES); 113 __bss_start = .; 114 115 .sbss : { *(.sbss .sbss.*) } 116 .bss : { *(.bss .bss.*) } 117 .bss..stack : { *(.bss) } 118 119 __bss_stop = .; 120 _end = . ; 121 . = ALIGN(PAGE_SIZE); 122 __kernel_image_end = .; 123 124 STABS_DEBUG 125 DWARF_DEBUG 126 127 .comment 0 : { *(.comment) } 128 129 DISCARDS 130} 131 132__kernel_image_size_no_bss = __bss_start - __kernel_image_start; 133