linux/arch/parisc/kernel/vmlinux.lds.S
<<
>>
Prefs
   1/*    Kernel link layout for various "sections"
   2 *
   3 *    Copyright (C) 1999-2003 Matthew Wilcox <willy at parisc-linux.org>
   4 *    Copyright (C) 2000-2003 Paul Bame <bame at parisc-linux.org>
   5 *    Copyright (C) 2000 John Marvin <jsm at parisc-linux.org>
   6 *    Copyright (C) 2000 Michael Ang <mang with subcarrier.org>
   7 *    Copyright (C) 2002 Randolph Chung <tausq with parisc-linux.org>
   8 *    Copyright (C) 2003 James Bottomley <jejb with parisc-linux.org>
   9 *    Copyright (C) 2006 Helge Deller <deller@gmx.de>
  10 *
  11 *
  12 *    This program is free software; you can redistribute it and/or modify
  13 *    it under the terms of the GNU General Public License as published by
  14 *    the Free Software Foundation; either version 2 of the License, or
  15 *    (at your option) any later version.
  16 *
  17 *    This program is distributed in the hope that it will be useful,
  18 *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  19 *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20 *    GNU General Public License for more details.
  21 *
  22 *    You should have received a copy of the GNU General Public License
  23 *    along with this program; if not, write to the Free Software
  24 *    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  25 */
  26#include <asm-generic/vmlinux.lds.h>
  27/* needed for the processor specific cache alignment size */    
  28#include <asm/cache.h>
  29#include <asm/page.h>
  30#include <asm/asm-offsets.h>
  31#include <asm/thread_info.h>
  32        
  33/* ld script to make hppa Linux kernel */
  34#ifndef CONFIG_64BIT
  35OUTPUT_FORMAT("elf32-hppa-linux")
  36OUTPUT_ARCH(hppa)
  37#else
  38OUTPUT_FORMAT("elf64-hppa-linux")
  39OUTPUT_ARCH(hppa:hppa2.0w)
  40#endif
  41
  42ENTRY(_stext)
  43#ifndef CONFIG_64BIT
  44jiffies = jiffies_64 + 4;
  45#else
  46jiffies = jiffies_64;
  47#endif
  48SECTIONS
  49{
  50        . = KERNEL_BINARY_TEXT_START;
  51
  52        _text = .;              /* Text and read-only data */
  53        .head ALIGN(16) : {
  54                HEAD_TEXT
  55        } = 0
  56        .text ALIGN(16) : {
  57                TEXT_TEXT
  58                SCHED_TEXT
  59                LOCK_TEXT
  60                KPROBES_TEXT
  61                IRQENTRY_TEXT
  62                *(.text.do_softirq)
  63                *(.text.sys_exit)
  64                *(.text.do_sigaltstack)
  65                *(.text.do_fork)
  66                *(.text.*)
  67                *(.fixup)
  68                *(.lock.text)           /* out-of-line lock text */
  69                *(.gnu.warning)
  70        }
  71        /* End of text section */
  72        _etext = .;
  73
  74        /* Start of data section */
  75        _sdata = .;
  76
  77        RODATA
  78
  79        /* writeable */
  80        /* Make sure this is page aligned so
  81         * that we can properly leave these
  82         * as writable
  83         */
  84        . = ALIGN(PAGE_SIZE);
  85        data_start = .;
  86
  87        /* unwind info */
  88        .PARISC.unwind : {
  89                __start___unwind = .;
  90                *(.PARISC.unwind)
  91                __stop___unwind = .;
  92        }
  93
  94        EXCEPTION_TABLE(16)
  95        NOTES
  96
  97        /* Data */
  98        RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, PAGE_SIZE)
  99
 100        /* PA-RISC locks requires 16-byte alignment */
 101        . = ALIGN(16);
 102        .data..lock_aligned : {
 103                *(.data..lock_aligned)
 104        }
 105
 106        /* End of data section */
 107        _edata = .;
 108
 109        /* BSS */
 110        __bss_start = .;
 111        /* page table entries need to be PAGE_SIZE aligned */
 112        . = ALIGN(PAGE_SIZE);
 113        .data..vmpages : {
 114                *(.data..vm0.pmd)
 115                *(.data..vm0.pgd)
 116                *(.data..vm0.pte)
 117        }
 118        .bss : {
 119                *(.bss)
 120                *(COMMON)
 121        }
 122        __bss_stop = .;
 123
 124#ifdef CONFIG_64BIT
 125        . = ALIGN(16);
 126        /* Linkage tables */
 127        .opd : {
 128                *(.opd)
 129        } PROVIDE (__gp = .); 
 130        .plt : {
 131                *(.plt)
 132        } 
 133        .dlt : {
 134                *(.dlt)
 135        }
 136#endif
 137
 138        /* reserve space for interrupt stack by aligning __init* to 16k */
 139        . = ALIGN(16384);
 140        __init_begin = .;
 141        INIT_TEXT_SECTION(16384)
 142        . = ALIGN(PAGE_SIZE);
 143        INIT_DATA_SECTION(16)
 144        /* we have to discard exit text and such at runtime, not link time */
 145        .exit.text :
 146        {
 147                EXIT_TEXT
 148        }
 149        .exit.data :
 150        {
 151                EXIT_DATA
 152        }
 153
 154        PERCPU_SECTION(L1_CACHE_BYTES)
 155        . = ALIGN(PAGE_SIZE);
 156        __init_end = .;
 157        /* freed after init ends here */
 158        _end = . ;
 159
 160        STABS_DEBUG
 161        .note 0 : { *(.note) }
 162
 163        /* Sections to be discarded */
 164        DISCARDS
 165        /DISCARD/ : {
 166#ifdef CONFIG_64BIT
 167                /* temporary hack until binutils is fixed to not emit these
 168                 * for static binaries
 169                 */
 170                *(.interp)
 171                *(.dynsym)
 172                *(.dynstr)
 173                *(.dynamic)
 174                *(.hash)
 175                *(.gnu.hash)
 176#endif
 177        }
 178}
 179