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 LOCK_TEXT 34 KPROBES_TEXT 35 *(.fixup) 36 *(.gnu.warning) 37 } = 0xcb 38 39 _etext = .; /* End of text section */ 40 41 EXCEPTION_TABLE(16) 42 BUG_TABLE 43 44 RO_DATA(PAGE_SIZE) 45 46 /* writeable */ 47 RW_DATA_SECTION(32, PAGE_SIZE, THREAD_SIZE) 48 _edata = .; 49 50 /* might get freed after init */ 51 . = ALIGN(PAGE_SIZE); 52 .smp_locks : AT(ADDR(.smp_locks) - LOAD_OFFSET) { 53 __smp_locks = .; 54 *(.smp_locks) 55 __smp_locks_end = .; 56 } 57 58 /* will be freed after init */ 59 . = ALIGN(PAGE_SIZE); /* Init code and data */ 60 __init_begin = .; 61 INIT_TEXT_SECTION(PAGE_SIZE) 62 INIT_DATA_SECTION(16) 63 . = ALIGN(4); 64 __alt_instructions = .; 65 .altinstructions : { *(.altinstructions) } 66 __alt_instructions_end = .; 67 .altinstr_replacement : { *(.altinstr_replacement) } 68 /* .exit.text is discard at runtime, not link time, to deal with references 69 from .altinstructions and .eh_frame */ 70 .exit.text : { EXIT_TEXT; } 71 .exit.data : { EXIT_DATA; } 72 73 PERCPU(32) 74 . = ALIGN(PAGE_SIZE); 75 __init_end = .; 76 /* freed after init ends here */ 77 78 BSS_SECTION(0, PAGE_SIZE, 4) 79 80 _end = . ; 81 82 /* This is where the kernel creates the early boot page tables */ 83 . = ALIGN(PAGE_SIZE); 84 pg0 = .; 85 86 STABS_DEBUG 87 88 DWARF_DEBUG 89 90 /* Sections to be discarded */ 91 DISCARDS 92} 93