linux/arch/csky/kernel/vmlinux.lds.S
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0 */
   2
   3#include <asm/vmlinux.lds.h>
   4#include <asm/page.h>
   5#include <asm/memory.h>
   6
   7OUTPUT_ARCH(csky)
   8ENTRY(_start)
   9
  10#ifndef __cskyBE__
  11jiffies = jiffies_64;
  12#else
  13jiffies = jiffies_64 + 4;
  14#endif
  15
  16#define VBR_BASE \
  17        . = ALIGN(1024); \
  18        vec_base = .; \
  19        . += 512;
  20
  21SECTIONS
  22{
  23        . = PAGE_OFFSET + PHYS_OFFSET_OFFSET;
  24
  25        _stext = .;
  26        __init_begin = .;
  27        HEAD_TEXT_SECTION
  28        INIT_TEXT_SECTION(PAGE_SIZE)
  29        INIT_DATA_SECTION(PAGE_SIZE)
  30        PERCPU_SECTION(L1_CACHE_BYTES)
  31        . = ALIGN(PAGE_SIZE);
  32        __init_end = .;
  33
  34        .text : AT(ADDR(.text) - LOAD_OFFSET) {
  35                _text = .;
  36                IRQENTRY_TEXT
  37                SOFTIRQENTRY_TEXT
  38                TEXT_TEXT
  39                SCHED_TEXT
  40                CPUIDLE_TEXT
  41                LOCK_TEXT
  42                KPROBES_TEXT
  43                *(.fixup)
  44                *(.gnu.warning)
  45        } = 0
  46        _etext = .;
  47
  48        /* __init_begin __init_end must be page aligned for free_initmem */
  49        . = ALIGN(PAGE_SIZE);
  50
  51
  52        _sdata = .;
  53        RO_DATA(PAGE_SIZE)
  54        RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
  55        _edata = .;
  56
  57#ifdef CONFIG_HAVE_TCM
  58        .tcm_start : {
  59                . = ALIGN(PAGE_SIZE);
  60                __tcm_start = .;
  61        }
  62
  63        .text_data_tcm FIXADDR_TCM : AT(__tcm_start)
  64        {
  65                . = ALIGN(4);
  66                __stcm_text_data = .;
  67                *(.tcm.text)
  68                *(.tcm.rodata)
  69#ifndef CONFIG_HAVE_DTCM
  70                *(.tcm.data)
  71#endif
  72                . = ALIGN(4);
  73                __etcm_text_data = .;
  74        }
  75
  76        . = ADDR(.tcm_start) + SIZEOF(.tcm_start) + SIZEOF(.text_data_tcm);
  77
  78#ifdef CONFIG_HAVE_DTCM
  79        #define ITCM_SIZE       CONFIG_ITCM_NR_PAGES * PAGE_SIZE
  80
  81        .dtcm_start : {
  82                __dtcm_start = .;
  83        }
  84
  85        .data_tcm FIXADDR_TCM + ITCM_SIZE : AT(__dtcm_start)
  86        {
  87                . = ALIGN(4);
  88                __stcm_data = .;
  89                *(.tcm.data)
  90                . = ALIGN(4);
  91                __etcm_data = .;
  92        }
  93
  94        . = ADDR(.dtcm_start) + SIZEOF(.data_tcm);
  95
  96        .tcm_end : AT(ADDR(.dtcm_start) + SIZEOF(.data_tcm)) {
  97#else
  98        .tcm_end : AT(ADDR(.tcm_start) + SIZEOF(.text_data_tcm)) {
  99#endif
 100                . = ALIGN(PAGE_SIZE);
 101                __tcm_end = .;
 102        }
 103#endif
 104
 105        EXCEPTION_TABLE(L1_CACHE_BYTES)
 106        BSS_SECTION(L1_CACHE_BYTES, PAGE_SIZE, L1_CACHE_BYTES)
 107        VBR_BASE
 108        _end = . ;
 109
 110        STABS_DEBUG
 111        DWARF_DEBUG
 112
 113        DISCARDS
 114}
 115