116bfeaf2SMichal Simek/* 216bfeaf2SMichal Simek * Copyright (C) 2008-2009 Michal Simek <monstr@monstr.eu> 316bfeaf2SMichal Simek * Copyright (C) 2008-2009 PetaLogix 416bfeaf2SMichal Simek * Copyright (C) 2006 Atmark Techno, Inc. 516bfeaf2SMichal Simek * 616bfeaf2SMichal Simek * This file is subject to the terms and conditions of the GNU General Public 716bfeaf2SMichal Simek * License. See the file "COPYING" in the main directory of this archive 816bfeaf2SMichal Simek * for more details. 916bfeaf2SMichal Simek */ 1016bfeaf2SMichal Simek 1116bfeaf2SMichal SimekOUTPUT_ARCH(microblaze) 12ca28b510SMichal SimekENTRY(microblaze_start) 1316bfeaf2SMichal Simek 143bda6f37SKees Cook#define RO_EXCEPTION_TABLE_ALIGN 16 153bda6f37SKees Cook 1606951c91SStefan Asserhall#include <asm/cache.h> 178cc11f5aSTim Abbott#include <asm/page.h> 18a061dd52SMichal Simek#include <asm-generic/vmlinux.lds.h> 198cc11f5aSTim Abbott#include <asm/thread_info.h> 2016bfeaf2SMichal Simek 2102b08045SMichal Simek#ifdef __MICROBLAZEEL__ 2202b08045SMichal Simekjiffies = jiffies_64; 2302b08045SMichal Simek#else 2416bfeaf2SMichal Simekjiffies = jiffies_64 + 4; 2502b08045SMichal Simek#endif 2616bfeaf2SMichal Simek 2716bfeaf2SMichal SimekSECTIONS { 28d4c1285eSMichal Simek . = CONFIG_KERNEL_START; 29ca28b510SMichal Simek microblaze_start = CONFIG_KERNEL_BASE_ADDR; 30a061dd52SMichal Simek .text : AT(ADDR(.text) - LOAD_OFFSET) { 3116bfeaf2SMichal Simek _text = . ; 3216bfeaf2SMichal Simek _stext = . ; 337a0248e8SSteven J. Magnani HEAD_TEXT 347a0248e8SSteven J. Magnani TEXT_TEXT 3516bfeaf2SMichal Simek *(.fixup) 361dcdd091SMichal Simek EXIT_TEXT 371dcdd091SMichal Simek EXIT_CALL 3816bfeaf2SMichal Simek SCHED_TEXT 396727ad9eSChris Metcalf CPUIDLE_TEXT 4016bfeaf2SMichal Simek LOCK_TEXT 4116bfeaf2SMichal Simek KPROBES_TEXT 427cf79d59SMichal Simek IRQENTRY_TEXT 43be7635e7SAlexander Potapenko SOFTIRQENTRY_TEXT 4416bfeaf2SMichal Simek . = ALIGN (4) ; 4516bfeaf2SMichal Simek _etext = . ; 4616bfeaf2SMichal Simek } 4716bfeaf2SMichal Simek 48*48783be4SRob Herring . = ALIGN (8) ; 49a061dd52SMichal Simek __fdt_blob : AT(ADDR(__fdt_blob) - LOAD_OFFSET) { 5016bfeaf2SMichal Simek _fdt_start = . ; /* place for fdt blob */ 51a061dd52SMichal Simek *(__fdt_blob) ; /* Any link-placed DTB */ 5222648c98SSiva Durga Prasad Paladugu . = _fdt_start + 0x10000; /* Pad up to 64kbyte */ 5316bfeaf2SMichal Simek _fdt_end = . ; 54a061dd52SMichal Simek } 5516bfeaf2SMichal Simek 5616bfeaf2SMichal Simek . = ALIGN(16); 57c8231825SKees Cook RO_DATA(4096) 5816bfeaf2SMichal Simek 5916bfeaf2SMichal Simek /* 6016bfeaf2SMichal Simek * sdata2 section can go anywhere, but must be word aligned 6116bfeaf2SMichal Simek * and SDA2_BASE must point to the middle of it 6216bfeaf2SMichal Simek */ 63a061dd52SMichal Simek .sdata2 : AT(ADDR(.sdata2) - LOAD_OFFSET) { 6416bfeaf2SMichal Simek _ssrw = .; 65ba9c4f88SSteven J. Magnani . = ALIGN(PAGE_SIZE); /* page aligned when MMU used */ 6616bfeaf2SMichal Simek *(.sdata2) 6716bfeaf2SMichal Simek . = ALIGN(8); 6816bfeaf2SMichal Simek _essrw = .; 6916bfeaf2SMichal Simek _ssrw_size = _essrw - _ssrw; 7016bfeaf2SMichal Simek _KERNEL_SDA2_BASE_ = _ssrw + (_ssrw_size / 2); 7116bfeaf2SMichal Simek } 7216bfeaf2SMichal Simek 7316bfeaf2SMichal Simek _sdata = . ; 74c9174047SKees Cook RW_DATA(32, PAGE_SIZE, THREAD_SIZE) 7516bfeaf2SMichal Simek _edata = . ; 7616bfeaf2SMichal Simek 7716bfeaf2SMichal Simek /* Under the microblaze ABI, .sdata and .sbss must be contiguous */ 7816bfeaf2SMichal Simek . = ALIGN(8); 79a061dd52SMichal Simek .sdata : AT(ADDR(.sdata) - LOAD_OFFSET) { 8016bfeaf2SMichal Simek _ssro = .; 8116bfeaf2SMichal Simek *(.sdata) 8216bfeaf2SMichal Simek } 8316bfeaf2SMichal Simek 84a061dd52SMichal Simek .sbss : AT(ADDR(.sbss) - LOAD_OFFSET) { 8516bfeaf2SMichal Simek _ssbss = .; 8616bfeaf2SMichal Simek *(.sbss) 8716bfeaf2SMichal Simek _esbss = .; 8816bfeaf2SMichal Simek _essro = .; 8916bfeaf2SMichal Simek _ssro_size = _essro - _ssro ; 9016bfeaf2SMichal Simek _KERNEL_SDA_BASE_ = _ssro + (_ssro_size / 2) ; 9116bfeaf2SMichal Simek } 9216bfeaf2SMichal Simek 9306951c91SStefan Asserhall PERCPU_SECTION(L1_CACHE_BYTES) 9406951c91SStefan Asserhall 9513cdee23SMichal Simek . = ALIGN(PAGE_SIZE); 9616bfeaf2SMichal Simek __init_begin = .; 9716bfeaf2SMichal Simek 988cc11f5aSTim Abbott INIT_TEXT_SECTION(PAGE_SIZE) 9916bfeaf2SMichal Simek 100a061dd52SMichal Simek .init.data : AT(ADDR(.init.data) - LOAD_OFFSET) { 10105bf7d46SMichal Simek INIT_DATA 10205bf7d46SMichal Simek } 10316bfeaf2SMichal Simek 10416bfeaf2SMichal Simek . = ALIGN(4); 105a061dd52SMichal Simek .init.ivt : AT(ADDR(.init.ivt) - LOAD_OFFSET) { 10616bfeaf2SMichal Simek __ivt_start = .; 10716bfeaf2SMichal Simek *(.init.ivt) 10816bfeaf2SMichal Simek __ivt_end = .; 10916bfeaf2SMichal Simek } 11016bfeaf2SMichal Simek 111a061dd52SMichal Simek .init.setup : AT(ADDR(.init.setup) - LOAD_OFFSET) { 1128cc11f5aSTim Abbott INIT_SETUP(0) 11316bfeaf2SMichal Simek } 11416bfeaf2SMichal Simek 115a061dd52SMichal Simek .initcall.init : AT(ADDR(.initcall.init) - LOAD_OFFSET ) { 1168cc11f5aSTim Abbott INIT_CALLS 11716bfeaf2SMichal Simek } 11816bfeaf2SMichal Simek 119a061dd52SMichal Simek .con_initcall.init : AT(ADDR(.con_initcall.init) - LOAD_OFFSET) { 1208cc11f5aSTim Abbott CON_INITCALL 12116bfeaf2SMichal Simek } 12216bfeaf2SMichal Simek 12316bfeaf2SMichal Simek __init_end_before_initramfs = .; 12416bfeaf2SMichal Simek 1258cb473daSMichal Simek .init.ramfs : AT(ADDR(.init.ramfs) - LOAD_OFFSET) { 1268cb473daSMichal Simek INIT_RAM_FS 12716bfeaf2SMichal Simek } 1288cb473daSMichal Simek 12916bfeaf2SMichal Simek __init_end = .; 13016bfeaf2SMichal Simek 131ba9c4f88SSteven J. Magnani .bss ALIGN (PAGE_SIZE) : AT(ADDR(.bss) - LOAD_OFFSET) { 132a061dd52SMichal Simek /* page aligned when MMU used */ 13316bfeaf2SMichal Simek __bss_start = . ; 13416bfeaf2SMichal Simek *(.bss*) 13516bfeaf2SMichal Simek *(COMMON) 13616bfeaf2SMichal Simek . = ALIGN (4) ; 13716bfeaf2SMichal Simek __bss_stop = . ; 13816bfeaf2SMichal Simek } 139ba9c4f88SSteven J. Magnani . = ALIGN(PAGE_SIZE); 14016bfeaf2SMichal Simek _end = .; 141405d967dSTejun Heo 142023bf6f1STejun Heo DISCARDS 14316bfeaf2SMichal Simek} 144