linux/arch/openrisc/kernel/vmlinux.lds.S
<<
>>
Prefs
   1/*
   2 * OpenRISC vmlinux.lds.S
   3 *
   4 * Linux architectural port borrowing liberally from similar works of
   5 * others.  All original copyrights apply as per the original source
   6 * declaration.
   7 *
   8 * Modifications for the OpenRISC architecture:
   9 * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com>
  10 * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se>
  11 *
  12 *      This program is free software; you can redistribute it and/or
  13 *      modify it under the terms of the GNU General Public License
  14 *      as published by the Free Software Foundation; either version
  15 *      2 of the License, or (at your option) any later version.
  16 *
  17 * ld script for OpenRISC architecture
  18 */
  19
  20/* TODO
  21 *              - clean up __offset & stuff
  22 *              - change all 8192 aligment to PAGE !!!
  23 *              - recheck if all aligments are really needed
  24 */
  25
  26#  define LOAD_OFFSET  PAGE_OFFSET
  27#  define LOAD_BASE    PAGE_OFFSET
  28
  29#include <asm/page.h>
  30#include <asm/cache.h>
  31#include <asm-generic/vmlinux.lds.h>
  32
  33OUTPUT_FORMAT("elf32-or32", "elf32-or32", "elf32-or32")
  34jiffies = jiffies_64 + 4;
  35
  36SECTIONS
  37{
  38        /* Read-only sections, merged into text segment: */
  39        . = LOAD_BASE ;
  40
  41        /* _s_kernel_ro must be page aligned */
  42        . = ALIGN(PAGE_SIZE);
  43        _s_kernel_ro = .;
  44
  45        .text                   : AT(ADDR(.text) - LOAD_OFFSET)
  46        {
  47          _stext = .;
  48          TEXT_TEXT
  49          SCHED_TEXT
  50          LOCK_TEXT
  51          KPROBES_TEXT
  52          IRQENTRY_TEXT
  53          *(.fixup)
  54          *(.text.__*)
  55          _etext = .;
  56        }
  57        /* TODO: Check if fixup and text.__* are really necessary
  58         * fixup is definitely necessary
  59         */
  60
  61        _sdata = .;
  62
  63        /* Page alignment required for RO_DATA_SECTION */
  64        RO_DATA_SECTION(PAGE_SIZE)
  65        _e_kernel_ro = .;
  66
  67        /* Whatever comes after _e_kernel_ro had better be page-aligend, too */
  68
  69        /* 32 here is cacheline size... recheck this */
  70        RW_DATA_SECTION(32, PAGE_SIZE, PAGE_SIZE)
  71
  72        _edata  =  .;
  73
  74        EXCEPTION_TABLE(4)
  75        NOTES
  76
  77        /* Init code and data */
  78        . = ALIGN(PAGE_SIZE);
  79        __init_begin = .;
  80
  81        HEAD_TEXT_SECTION
  82
  83        /* Page aligned */
  84        INIT_TEXT_SECTION(PAGE_SIZE)
  85
  86        /* Align __setup_start on 16 byte boundary */
  87        INIT_DATA_SECTION(16)
  88
  89        PERCPU_SECTION(L1_CACHE_BYTES)
  90
  91        __init_end = .;
  92
  93        . = ALIGN(PAGE_SIZE);
  94        .initrd                 : AT(ADDR(.initrd) - LOAD_OFFSET)
  95        {
  96                __initrd_start = .;
  97                *(.initrd)
  98                __initrd_end = .;
  99                FILL (0);
 100                . = ALIGN (PAGE_SIZE);
 101        }
 102
 103        __vmlinux_end = .;            /* last address of the physical file */
 104
 105        BSS_SECTION(0, 0, 0x20)
 106
 107        _end = .;
 108
 109        /* Throw in the debugging sections */
 110        STABS_DEBUG
 111        DWARF_DEBUG
 112
 113        /* Sections to be discarded -- must be last */
 114        DISCARDS
 115}
 116