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