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 _start = .; 26 HEAD_TEXT_SECTION 27 . = ALIGN(PAGE_SIZE); 28 29 .text : AT(ADDR(.text) - LOAD_OFFSET) { 30 _text = .; 31 _stext = .; 32 VBR_BASE 33 IRQENTRY_TEXT 34 SOFTIRQENTRY_TEXT 35 TEXT_TEXT 36 SCHED_TEXT 37 LOCK_TEXT 38 KPROBES_TEXT 39 *(.fixup) 40 *(.gnu.warning) 41 } = 0 42 _etext = .; 43 44 /* __init_begin __init_end must be page aligned for free_initmem */ 45 . = ALIGN(PAGE_SIZE); 46 __init_begin = .; 47 INIT_TEXT_SECTION(PAGE_SIZE) 48 INIT_DATA_SECTION(PAGE_SIZE) 49 PERCPU_SECTION(L1_CACHE_BYTES) 50 . = ALIGN(PAGE_SIZE); 51 __init_end = .; 52 53 _sdata = .; 54 RO_DATA(PAGE_SIZE) 55 RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE) 56 _edata = .; 57 58#ifdef CONFIG_HAVE_TCM 59 .tcm_start : { 60 . = ALIGN(PAGE_SIZE); 61 __tcm_start = .; 62 } 63 64 .text_data_tcm FIXADDR_TCM : AT(__tcm_start) 65 { 66 . = ALIGN(4); 67 __stcm_text_data = .; 68 *(.tcm.text) 69 *(.tcm.rodata) 70#ifndef CONFIG_HAVE_DTCM 71 *(.tcm.data) 72#endif 73 . = ALIGN(4); 74 __etcm_text_data = .; 75 } 76 77 . = ADDR(.tcm_start) + SIZEOF(.tcm_start) + SIZEOF(.text_data_tcm); 78 79#ifdef CONFIG_HAVE_DTCM 80 #define ITCM_SIZE CONFIG_ITCM_NR_PAGES * PAGE_SIZE 81 82 .dtcm_start : { 83 __dtcm_start = .; 84 } 85 86 .data_tcm FIXADDR_TCM + ITCM_SIZE : AT(__dtcm_start) 87 { 88 . = ALIGN(4); 89 __stcm_data = .; 90 *(.tcm.data) 91 . = ALIGN(4); 92 __etcm_data = .; 93 } 94 95 . = ADDR(.dtcm_start) + SIZEOF(.data_tcm); 96 97 .tcm_end : AT(ADDR(.dtcm_start) + SIZEOF(.data_tcm)) { 98#else 99 .tcm_end : AT(ADDR(.tcm_start) + SIZEOF(.text_data_tcm)) { 100#endif 101 . = ALIGN(PAGE_SIZE); 102 __tcm_end = .; 103 } 104#endif 105 106 EXCEPTION_TABLE(L1_CACHE_BYTES) 107 BSS_SECTION(L1_CACHE_BYTES, PAGE_SIZE, L1_CACHE_BYTES) 108 _end = . ; 109 110 STABS_DEBUG 111 DWARF_DEBUG 112 ELF_DETAILS 113 114 DISCARDS 115} 116