1/* MN10300 Main kernel linker script 2 * 3 * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. 4 * Written by David Howells (dhowells@redhat.com) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public Licence 8 * as published by the Free Software Foundation; either version 9 * 2 of the Licence, or (at your option) any later version. 10 */ 11#define __VMLINUX_LDS__ 12#include <asm-generic/vmlinux.lds.h> 13#include <asm/thread_info.h> 14#include <asm/page.h> 15 16OUTPUT_FORMAT("elf32-am33lin", "elf32-am33lin", "elf32-am33lin") 17OUTPUT_ARCH(mn10300) 18ENTRY(_start) 19jiffies = jiffies_64; 20#ifndef CONFIG_MN10300_CURRENT_IN_E2 21current = __current; 22#endif 23SECTIONS 24{ 25 . = CONFIG_KERNEL_TEXT_ADDRESS; 26 /* read-only */ 27 _stext = .; 28 _text = .; /* Text and read-only data */ 29 .text : { 30 HEAD_TEXT 31 TEXT_TEXT 32 SCHED_TEXT 33 CPUIDLE_TEXT 34 LOCK_TEXT 35 KPROBES_TEXT 36 *(.fixup) 37 *(.gnu.warning) 38 } = 0xcb 39 40 _etext = .; /* End of text section */ 41 42 EXCEPTION_TABLE(16) 43 BUG_TABLE 44 45 RO_DATA(PAGE_SIZE) 46 47 /* writeable */ 48 _sdata = .; /* Start of rw data section */ 49 RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE) 50 _edata = .; 51 52 /* might get freed after init */ 53 . = ALIGN(PAGE_SIZE); 54 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 55 __smp_locks = .; 56 *(.smp_locks) 57 __smp_locks_end = .; 58 } 59 60 /* will be freed after init */ 61 . = ALIGN(PAGE_SIZE); /* Init code and data */ 62 __init_begin = .; 63 INIT_TEXT_SECTION(PAGE_SIZE) 64 INIT_DATA_SECTION(16) 65 . = ALIGN(4); 66 __alt_instructions = .; 67 .altinstructions : { *(.altinstructions) } 68 __alt_instructions_end = .; 69 .altinstr_replacement : { *(.altinstr_replacement) } 70 /* .exit.text is discard at runtime, not link time, to deal with references 71 from .altinstructions and .eh_frame */ 72 .exit.text : { EXIT_TEXT; } 73 .exit.data : { EXIT_DATA; } 74 75 PERCPU_SECTION(32) 76 . = ALIGN(PAGE_SIZE); 77 __init_end = .; 78 /* freed after init ends here */ 79 80 BSS_SECTION(0, PAGE_SIZE, 4) 81 82 _end = . ; 83 84 /* This is where the kernel creates the early boot page tables */ 85 . = ALIGN(PAGE_SIZE); 86 pg0 = .; 87 88 STABS_DEBUG 89 90 DWARF_DEBUG 91 92 /* Sections to be discarded */ 93 DISCARDS 94} 95