1*e95bf452SRichard Kuo/* 2*e95bf452SRichard Kuo * Linker script for Hexagon kernel 3*e95bf452SRichard Kuo * 4*e95bf452SRichard Kuo * Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. 5*e95bf452SRichard Kuo * 6*e95bf452SRichard Kuo * This program is free software; you can redistribute it and/or modify 7*e95bf452SRichard Kuo * it under the terms of the GNU General Public License version 2 and 8*e95bf452SRichard Kuo * only version 2 as published by the Free Software Foundation. 9*e95bf452SRichard Kuo * 10*e95bf452SRichard Kuo * This program is distributed in the hope that it will be useful, 11*e95bf452SRichard Kuo * but WITHOUT ANY WARRANTY; without even the implied warranty of 12*e95bf452SRichard Kuo * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13*e95bf452SRichard Kuo * GNU General Public License for more details. 14*e95bf452SRichard Kuo * 15*e95bf452SRichard Kuo * You should have received a copy of the GNU General Public License 16*e95bf452SRichard Kuo * along with this program; if not, write to the Free Software 17*e95bf452SRichard Kuo * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 18*e95bf452SRichard Kuo * 02110-1301, USA. 19*e95bf452SRichard Kuo */ 20*e95bf452SRichard Kuo 21*e95bf452SRichard Kuo#define LOAD_OFFSET PAGE_OFFSET 22*e95bf452SRichard Kuo 23*e95bf452SRichard Kuo#include <asm-generic/vmlinux.lds.h> 24*e95bf452SRichard Kuo#include <asm/asm-offsets.h> /* Most of the kernel defines are here */ 25*e95bf452SRichard Kuo#include <asm/mem-layout.h> /* except for page_offset */ 26*e95bf452SRichard Kuo#include <asm/cache.h> /* and now we're pulling cache line size */ 27*e95bf452SRichard KuoOUTPUT_ARCH(hexagon) 28*e95bf452SRichard KuoENTRY(stext) 29*e95bf452SRichard Kuo 30*e95bf452SRichard Kuojiffies = jiffies_64; 31*e95bf452SRichard Kuo 32*e95bf452SRichard Kuo/* 33*e95bf452SRichard KuoSee asm-generic/vmlinux.lds.h for expansion of some of these macros. 34*e95bf452SRichard KuoSee asm-generic/sections.h for seemingly required labels. 35*e95bf452SRichard Kuo*/ 36*e95bf452SRichard Kuo 37*e95bf452SRichard Kuo#define PAGE_SIZE _PAGE_SIZE 38*e95bf452SRichard Kuo 39*e95bf452SRichard Kuo/* This LOAD_OFFSET is temporary for debugging on the simulator; it may change 40*e95bf452SRichard Kuo for hypervisor pseudo-physical memory. */ 41*e95bf452SRichard Kuo 42*e95bf452SRichard Kuo 43*e95bf452SRichard KuoSECTIONS 44*e95bf452SRichard Kuo{ 45*e95bf452SRichard Kuo . = PAGE_OFFSET + LOAD_ADDRESS; 46*e95bf452SRichard Kuo 47*e95bf452SRichard Kuo __init_begin = .; 48*e95bf452SRichard Kuo HEAD_TEXT_SECTION 49*e95bf452SRichard Kuo INIT_TEXT_SECTION(PAGE_SIZE) 50*e95bf452SRichard Kuo PERCPU_SECTION(L1_CACHE_BYTES) 51*e95bf452SRichard Kuo __init_end = .; 52*e95bf452SRichard Kuo 53*e95bf452SRichard Kuo . = ALIGN(_PAGE_SIZE); 54*e95bf452SRichard Kuo _stext = .; 55*e95bf452SRichard Kuo .text : AT(ADDR(.text) - LOAD_OFFSET) { 56*e95bf452SRichard Kuo _text = .; 57*e95bf452SRichard Kuo TEXT_TEXT 58*e95bf452SRichard Kuo SCHED_TEXT 59*e95bf452SRichard Kuo LOCK_TEXT 60*e95bf452SRichard Kuo KPROBES_TEXT 61*e95bf452SRichard Kuo *(.fixup) 62*e95bf452SRichard Kuo } 63*e95bf452SRichard Kuo _etext = .; 64*e95bf452SRichard Kuo 65*e95bf452SRichard Kuo INIT_DATA_SECTION(PAGE_SIZE) 66*e95bf452SRichard Kuo 67*e95bf452SRichard Kuo _sdata = .; 68*e95bf452SRichard Kuo RW_DATA_SECTION(32,PAGE_SIZE,PAGE_SIZE) 69*e95bf452SRichard Kuo RO_DATA_SECTION(PAGE_SIZE) 70*e95bf452SRichard Kuo _edata = .; 71*e95bf452SRichard Kuo 72*e95bf452SRichard Kuo EXCEPTION_TABLE(16) 73*e95bf452SRichard Kuo NOTES 74*e95bf452SRichard Kuo 75*e95bf452SRichard Kuo BSS_SECTION(_PAGE_SIZE, _PAGE_SIZE, _PAGE_SIZE) 76*e95bf452SRichard Kuo 77*e95bf452SRichard Kuo _end = .; 78*e95bf452SRichard Kuo 79*e95bf452SRichard Kuo /DISCARD/ : { 80*e95bf452SRichard Kuo EXIT_TEXT 81*e95bf452SRichard Kuo EXIT_DATA 82*e95bf452SRichard Kuo EXIT_CALL 83*e95bf452SRichard Kuo } 84*e95bf452SRichard Kuo 85*e95bf452SRichard Kuo STABS_DEBUG 86*e95bf452SRichard Kuo DWARF_DEBUG 87*e95bf452SRichard Kuo 88*e95bf452SRichard Kuo} 89