linux/arch/c6x/kernel/vmlinux.lds.S
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2/*
   3 * ld script for the c6x kernel
   4 *
   5 *  Copyright (C) 2010, 2011 Texas Instruments Incorporated
   6 *  Mark Salter <msalter@redhat.com>
   7 */
   8#include <asm-generic/vmlinux.lds.h>
   9#include <asm/thread_info.h>
  10#include <asm/page.h>
  11
  12ENTRY(_c_int00)
  13
  14#if defined(CONFIG_CPU_BIG_ENDIAN)
  15jiffies = jiffies_64 + 4;
  16#else
  17jiffies = jiffies_64;
  18#endif
  19
  20#define READONLY_SEGMENT_START  \
  21        . = PAGE_OFFSET;
  22#define READWRITE_SEGMENT_START \
  23        . = ALIGN(128);         \
  24        _data_lma = .;
  25
  26SECTIONS
  27{
  28        /*
  29         * Start kernel read only segment
  30         */
  31        READONLY_SEGMENT_START
  32
  33        .vectors :
  34        {
  35                _vectors_start = .;
  36                *(.vectors)
  37                . = ALIGN(0x400);
  38                _vectors_end = .;
  39        }
  40
  41        /*
  42         * This section contains data which may be shared with other
  43         * cores. It needs to be a fixed offset from PAGE_OFFSET
  44         * regardless of kernel configuration.
  45         */
  46        .virtio_ipc_dev :
  47        {
  48                *(.virtio_ipc_dev)
  49        }
  50
  51        . = ALIGN(PAGE_SIZE);
  52        __init_begin = .;
  53        .init :
  54        {
  55                _sinittext = .;
  56                HEAD_TEXT
  57                INIT_TEXT
  58                _einittext = .;
  59        }
  60
  61        INIT_DATA_SECTION(16)
  62
  63        PERCPU_SECTION(128)
  64
  65        . = ALIGN(PAGE_SIZE);
  66        __init_end = .;
  67
  68        .text :
  69        {
  70                _text = .;
  71                _stext = .;
  72                TEXT_TEXT
  73                SCHED_TEXT
  74                CPUIDLE_TEXT
  75                LOCK_TEXT
  76                IRQENTRY_TEXT
  77                SOFTIRQENTRY_TEXT
  78                KPROBES_TEXT
  79                *(.fixup)
  80                *(.gnu.warning)
  81        }
  82
  83        EXCEPTION_TABLE(16)
  84        NOTES
  85
  86        RO_DATA_SECTION(PAGE_SIZE)
  87        .const :
  88        {
  89                *(.const .const.* .gnu.linkonce.r.*)
  90                *(.switch)
  91        }
  92
  93        _etext = .;
  94
  95        /*
  96         * Start kernel read-write segment.
  97         */
  98        READWRITE_SEGMENT_START
  99        _sdata = .;
 100
 101        .fardata : AT(ADDR(.fardata) - LOAD_OFFSET)
 102        {
 103                INIT_TASK_DATA(THREAD_SIZE)
 104                NOSAVE_DATA
 105                PAGE_ALIGNED_DATA(PAGE_SIZE)
 106                CACHELINE_ALIGNED_DATA(128)
 107                READ_MOSTLY_DATA(128)
 108                DATA_DATA
 109                CONSTRUCTORS
 110                *(.data1)
 111                *(.fardata .fardata.*)
 112                *(.data.debug_bpt)
 113        }
 114
 115        .neardata ALIGN(8) : AT(ADDR(.neardata) - LOAD_OFFSET)
 116        {
 117                *(.neardata2 .neardata2.* .gnu.linkonce.s2.*)
 118                *(.neardata .neardata.* .gnu.linkonce.s.*)
 119                . = ALIGN(8);
 120        }
 121
 122        BUG_TABLE
 123
 124        _edata = .;
 125
 126        __bss_start = .;
 127        SBSS(8)
 128        BSS(8)
 129        .far :
 130        {
 131                . = ALIGN(8);
 132                *(.dynfar)
 133                *(.far .far.* .gnu.linkonce.b.*)
 134                . = ALIGN(8);
 135        }
 136        __bss_stop = .;
 137
 138        _end = .;
 139
 140        DWARF_DEBUG
 141
 142        /DISCARD/ :
 143        {
 144                  EXIT_TEXT
 145                  EXIT_DATA
 146                  EXIT_CALL
 147                  *(.discard)
 148                  *(.discard.*)
 149                  *(.interp)
 150        }
 151}
 152