1 /* << 2 * Copyright (C) 2008-2009 Michal Simek <monstr << 3 * Copyright (C) 2008-2009 PetaLogix << 4 * Copyright (C) 2006 Atmark Techno, Inc. << 5 * << 6 * This file is subject to the terms and condi << 7 * License. See the file "COPYING" in the main << 8 * for more details. << 9 */ << 10 << 11 OUTPUT_ARCH(microblaze) << 12 ENTRY(microblaze_start) << 13 << 14 #define RO_EXCEPTION_TABLE_ALIGN 16 << 15 << 16 #include <asm/cache.h> << 17 #include <asm/page.h> << 18 #include <asm-generic/vmlinux.lds.h> 1 #include <asm-generic/vmlinux.lds.h> 19 #include <asm/thread_info.h> << 20 2 21 #ifdef __MICROBLAZEEL__ !! 3 OUTPUT_ARCH(powerpc) 22 jiffies = jiffies_64; << 23 #else << 24 jiffies = jiffies_64 + 4; 4 jiffies = jiffies_64 + 4; 25 #endif !! 5 SECTIONS 26 !! 6 { 27 SECTIONS { !! 7 /* Read-only sections, merged into text segment: */ 28 . = CONFIG_KERNEL_START; !! 8 . = + SIZEOF_HEADERS; 29 microblaze_start = CONFIG_KERNEL_BASE_ !! 9 .interp : { *(.interp) } 30 .text : AT(ADDR(.text) - LOAD_OFFSET) !! 10 .hash : { *(.hash) } 31 _text = . ; !! 11 .dynsym : { *(.dynsym) } 32 _stext = . ; !! 12 .dynstr : { *(.dynstr) } 33 HEAD_TEXT !! 13 .rel.text : { *(.rel.text) } 34 TEXT_TEXT !! 14 .rela.text : { *(.rela.text) } 35 *(.fixup) !! 15 .rel.data : { *(.rel.data) } 36 EXIT_TEXT !! 16 .rela.data : { *(.rela.data) } 37 EXIT_CALL !! 17 .rel.rodata : { *(.rel.rodata) } 38 SCHED_TEXT !! 18 .rela.rodata : { *(.rela.rodata) } 39 LOCK_TEXT !! 19 .rel.got : { *(.rel.got) } 40 KPROBES_TEXT !! 20 .rela.got : { *(.rela.got) } 41 IRQENTRY_TEXT !! 21 .rel.ctors : { *(.rel.ctors) } 42 SOFTIRQENTRY_TEXT !! 22 .rela.ctors : { *(.rela.ctors) } 43 . = ALIGN (4) ; !! 23 .rel.dtors : { *(.rel.dtors) } 44 _etext = . ; !! 24 .rela.dtors : { *(.rela.dtors) } 45 } !! 25 .rel.bss : { *(.rel.bss) } 46 !! 26 .rela.bss : { *(.rela.bss) } 47 . = ALIGN (8) ; !! 27 .rel.plt : { *(.rel.plt) } 48 __fdt_blob : AT(ADDR(__fdt_blob) - LOA !! 28 .rela.plt : { *(.rela.plt) } 49 _fdt_start = . ; !! 29 /* .init : { *(.init) } =0*/ 50 *(__fdt_blob) ; !! 30 .plt : { *(.plt) } 51 . = _fdt_start + 0x10000; !! 31 .text : 52 _fdt_end = . ; !! 32 { 53 } !! 33 *(.text) 54 !! 34 *(.fixup) 55 . = ALIGN(16); !! 35 *(.got1) 56 RO_DATA(4096) !! 36 __got2_start = .; 57 !! 37 *(.got2) 58 /* !! 38 __got2_end = .; 59 * sdata2 section can go anywhere, but !! 39 } 60 * and SDA2_BASE must point to the mid !! 40 _etext = .; 61 */ !! 41 PROVIDE (etext = .); 62 .sdata2 : AT(ADDR(.sdata2) - LOAD_OFFS !! 42 63 _ssrw = .; !! 43 RODATA 64 . = ALIGN(PAGE_SIZE); /* page !! 44 .fini : { *(.fini) } =0 65 *(.sdata2) !! 45 .ctors : { *(.ctors) } 66 . = ALIGN(8); !! 46 .dtors : { *(.dtors) } 67 _essrw = .; !! 47 68 _ssrw_size = _essrw - _ssrw; !! 48 .fixup : { *(.fixup) } 69 _KERNEL_SDA2_BASE_ = _ssrw + (_ssrw_si !! 49 70 } !! 50 __ex_table : { 71 !! 51 __start___ex_table = .; 72 _sdata = . ; !! 52 *(__ex_table) 73 RW_DATA(32, PAGE_SIZE, THREAD_SIZE) !! 53 __stop___ex_table = .; 74 _edata = . ; !! 54 } 75 !! 55 76 /* Under the microblaze ABI, .sdata an !! 56 __bug_table : { 77 . = ALIGN(8); !! 57 __start___bug_table = .; 78 .sdata : AT(ADDR(.sdata) - LOAD_OFFSET !! 58 *(__bug_table) 79 _ssro = .; !! 59 __stop___bug_table = .; 80 *(.sdata) !! 60 } 81 } !! 61 82 !! 62 /* Read-write section, merged into data segment: */ 83 .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) !! 63 . = ALIGN(4096); 84 _ssbss = .; !! 64 .data : 85 *(.sbss) !! 65 { 86 _esbss = .; !! 66 *(.data) 87 _essro = .; !! 67 *(.data1) 88 _ssro_size = _essro - _ssro ; !! 68 *(.sdata) 89 _KERNEL_SDA_BASE_ = _ssro + (_ !! 69 *(.sdata2) 90 } !! 70 *(.got.plt) *(.got) 91 !! 71 *(.dynamic) 92 PERCPU_SECTION(L1_CACHE_BYTES) !! 72 CONSTRUCTORS 93 !! 73 } 94 . = ALIGN(PAGE_SIZE); !! 74 95 __init_begin = .; !! 75 . = ALIGN(32); 96 !! 76 .data.cacheline_aligned : { *(.data.cacheline_aligned) } 97 INIT_TEXT_SECTION(PAGE_SIZE) !! 77 98 !! 78 _edata = .; 99 .init.data : AT(ADDR(.init.data) - LOA !! 79 PROVIDE (edata = .); 100 INIT_DATA !! 80 101 } !! 81 . = ALIGN(8192); 102 !! 82 .data.init_task : { *(.data.init_task) } 103 . = ALIGN(4); !! 83 104 .init.ivt : AT(ADDR(.init.ivt) - LOAD_ !! 84 . = ALIGN(4096); 105 __ivt_start = .; !! 85 __init_begin = .; 106 *(.init.ivt) !! 86 .init.text : { 107 __ivt_end = .; !! 87 _sinittext = .; 108 } !! 88 *(.init.text) 109 !! 89 _einittext = .; 110 .init.setup : AT(ADDR(.init.setup) - L !! 90 } 111 INIT_SETUP(0) !! 91 .init.data : { 112 } !! 92 *(.init.data); 113 !! 93 __vtop_table_begin = .; 114 .initcall.init : AT(ADDR(.initcall.ini !! 94 *(.vtop_fixup); 115 INIT_CALLS !! 95 __vtop_table_end = .; 116 } !! 96 __ptov_table_begin = .; 117 !! 97 *(.ptov_fixup); 118 .con_initcall.init : AT(ADDR(.con_init !! 98 __ptov_table_end = .; 119 CON_INITCALL !! 99 } 120 } !! 100 . = ALIGN(16); 121 !! 101 __setup_start = .; 122 __init_end_before_initramfs = .; !! 102 .init.setup : { *(.init.setup) } 123 !! 103 __setup_end = .; 124 .init.ramfs : AT(ADDR(.init.ramfs) - L !! 104 __start___param = .; 125 INIT_RAM_FS !! 105 __param : { *(__param) } 126 } !! 106 __stop___param = .; 127 !! 107 __initcall_start = .; 128 __init_end = .; !! 108 .initcall.init : { 129 !! 109 *(.initcall1.init) 130 .bss ALIGN (PAGE_SIZE) : AT(ADDR(.bss) !! 110 *(.initcall2.init) 131 /* page aligned when MMU used !! 111 *(.initcall3.init) 132 __bss_start = . ; !! 112 *(.initcall4.init) 133 *(.bss*) !! 113 *(.initcall5.init) 134 *(COMMON) !! 114 *(.initcall6.init) 135 . = ALIGN (4) ; !! 115 *(.initcall7.init) 136 __bss_stop = . ; !! 116 } 137 } !! 117 __initcall_end = .; 138 . = ALIGN(PAGE_SIZE); !! 118 139 _end = .; !! 119 __con_initcall_start = .; 140 !! 120 .con_initcall.init : { *(.con_initcall.init) } 141 DISCARDS !! 121 __con_initcall_end = .; >> 122 >> 123 SECURITY_INIT >> 124 >> 125 __start___ftr_fixup = .; >> 126 __ftr_fixup : { *(__ftr_fixup) } >> 127 __stop___ftr_fixup = .; >> 128 >> 129 . = ALIGN(32); >> 130 __per_cpu_start = .; >> 131 .data.percpu : { *(.data.percpu) } >> 132 __per_cpu_end = .; >> 133 >> 134 . = ALIGN(4096); >> 135 __initramfs_start = .; >> 136 .init.ramfs : { *(.init.ramfs) } >> 137 __initramfs_end = .; >> 138 >> 139 . = ALIGN(4096); >> 140 __init_end = .; >> 141 >> 142 . = ALIGN(4096); >> 143 __pmac_begin = .; >> 144 .pmac.text : { *(.pmac.text) } >> 145 .pmac.data : { *(.pmac.data) } >> 146 . = ALIGN(4096); >> 147 __pmac_end = .; >> 148 >> 149 . = ALIGN(4096); >> 150 __prep_begin = .; >> 151 .prep.text : { *(.prep.text) } >> 152 .prep.data : { *(.prep.data) } >> 153 . = ALIGN(4096); >> 154 __prep_end = .; >> 155 >> 156 . = ALIGN(4096); >> 157 __chrp_begin = .; >> 158 .chrp.text : { *(.chrp.text) } >> 159 .chrp.data : { *(.chrp.data) } >> 160 . = ALIGN(4096); >> 161 __chrp_end = .; >> 162 >> 163 . = ALIGN(4096); >> 164 __openfirmware_begin = .; >> 165 .openfirmware.text : { *(.openfirmware.text) } >> 166 .openfirmware.data : { *(.openfirmware.data) } >> 167 . = ALIGN(4096); >> 168 __openfirmware_end = .; >> 169 >> 170 __bss_start = .; >> 171 .bss : >> 172 { >> 173 *(.sbss) *(.scommon) >> 174 *(.dynbss) >> 175 *(.bss) >> 176 *(COMMON) >> 177 } >> 178 __bss_stop = .; >> 179 >> 180 _end = . ; >> 181 PROVIDE (end = .); >> 182 >> 183 /* Sections to be discarded. */ >> 184 /DISCARD/ : { >> 185 *(.exitcall.exit) >> 186 } 142 } 187 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.