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        .text ALIGN(16) : {
  54                HEAD_TEXT
  55                TEXT_TEXT
  56                SCHED_TEXT
  57                LOCK_TEXT
  58                KPROBES_TEXT
  59                IRQENTRY_TEXT
  60                *(.text.do_softirq)
  61                *(.text.sys_exit)
  62                *(.text.do_sigaltstack)
  63                *(.text.do_fork)
  64                *(.text.*)
  65                *(.fixup)
  66                *(.lock.text)           /* out-of-line lock text */
  67                *(.gnu.warning)
  68        } = 0
  69        /* End of text section */
  70        _etext = .;
  71
  72        RODATA
  73
  74        /* writeable */
  75        /* Make sure this is page aligned so
  76         * that we can properly leave these
  77         * as writable
  78         */
  79        . = ALIGN(PAGE_SIZE);
  80        data_start = .;
  81
  82        /* unwind info */
  83        .PARISC.unwind : {
  84                __start___unwind = .;
  85                *(.PARISC.unwind)
  86                __stop___unwind = .;
  87        }
  88
  89        EXCEPTION_TABLE(16)
  90        NOTES
  91
  92        /* Data */
  93        RW_DATA_SECTION(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
  94
  95        /* PA-RISC locks requires 16-byte alignment */
  96        . = ALIGN(16);
  97        .data.lock_aligned : {
  98                *(.data.lock_aligned)
  99        }
 100
 101        /* End of data section */
 102        _edata = .;
 103
 104        /* BSS */
 105        __bss_start = .;
 106        /* page table entries need to be PAGE_SIZE aligned */
 107        . = ALIGN(PAGE_SIZE);
 108        .data.vmpages : {
 109                *(.data.vm0.pmd)
 110                *(.data.vm0.pgd)
 111                *(.data.vm0.pte)
 112        }
 113        .bss : {
 114                *(.bss)
 115                *(COMMON)
 116        }
 117        __bss_stop = .;
 118
 119#ifdef CONFIG_64BIT
 120        . = ALIGN(16);
 121        /* Linkage tables */
 122        .opd : {
 123                *(.opd)
 124        } PROVIDE (__gp = .); 
 125        .plt : {
 126                *(.plt)
 127        } 
 128        .dlt : {
 129                *(.dlt)
 130        }
 131#endif
 132
 133        /* reserve space for interrupt stack by aligning __init* to 16k */
 134        . = ALIGN(16384);
 135        __init_begin = .;
 136        INIT_TEXT_SECTION(16384)
 137        INIT_DATA_SECTION(16)
 138        /* we have to discard exit text and such at runtime, not link time */
 139        .exit.text :
 140        {
 141                EXIT_TEXT
 142        }
 143        .exit.data :
 144        {
 145                EXIT_DATA
 146        }
 147
 148        PERCPU(PAGE_SIZE)
 149        . = ALIGN(PAGE_SIZE);
 150        __init_end = .;
 151        /* freed after init ends here */
 152        _end = . ;
 153
 154        STABS_DEBUG
 155        .note 0 : { *(.note) }
 156
 157        /* Sections to be discarded */
 158        DISCARDS
 159        /DISCARD/ : {
 160#ifdef CONFIG_64BIT
 161                /* temporary hack until binutils is fixed to not emit these
 162                 * for static binaries
 163                 */
 164                *(.interp)
 165                *(.dynsym)
 166                *(.dynstr)
 167                *(.dynamic)
 168                *(.hash)
 169                *(.gnu.hash)
 170#endif
 171        }
 172}
 173