/* SPDX-License-Identifier: GPL-2.0-only */1/*2* Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)3*/45#include <asm-generic/vmlinux.lds.h>6#include <asm/cache.h>7#include <asm/page.h>8#include <asm/thread_info.h>910OUTPUT_ARCH(arc)11ENTRY(res_service)1213#ifdef CONFIG_CPU_BIG_ENDIAN14jiffies = jiffies_64 + 4;15#else16jiffies = jiffies_64;17#endif1819SECTIONS20{21/*22* ICCM starts at 0x8000_0000. So if kernel is relocated to some other23* address, make sure peripheral at 0x8z doesn't clash with ICCM24* Essentially vector is also in ICCM.25*/2627. = CONFIG_LINUX_LINK_BASE;2829_int_vec_base_lds = .;30.vector : {31*(.vector)32. = ALIGN(PAGE_SIZE);33}3435#ifdef CONFIG_ARC_HAS_ICCM36.text.arcfp : {37*(.text.arcfp)38. = ALIGN(CONFIG_ARC_ICCM_SZ * 1024);39}40#endif4142/*43* The reason for having a separate subsection .init.ramfs is to44* prevent objdump from including it in kernel dumps45*46* Reason for having .init.ramfs above .init is to make sure that the47* binary blob is tucked away to one side, reducing the displacement48* between .init.text and .text, avoiding any possible relocation49* errors because of calls from .init.text to .text50* Yes such calls do exist. e.g.51* decompress_inflate.c:gunzip( ) -> zlib_inflate_workspace( )52*/5354__init_begin = .;5556.init.ramfs : { INIT_RAM_FS }5758. = ALIGN(PAGE_SIZE);5960HEAD_TEXT_SECTION61INIT_TEXT_SECTION(L1_CACHE_BYTES)6263/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */64.init.data : {65INIT_DATA66INIT_SETUP(L1_CACHE_BYTES)67INIT_CALLS68CON_INITCALL69}7071.init.arch.info : {72__arch_info_begin = .;73*(.arch.info.init)74__arch_info_end = .;75}7677PERCPU_SECTION(L1_CACHE_BYTES)7879. = ALIGN(PAGE_SIZE);80__init_end = .;8182.text : {83_text = .;84_stext = .;85TEXT_TEXT86SCHED_TEXT87LOCK_TEXT88KPROBES_TEXT89IRQENTRY_TEXT90SOFTIRQENTRY_TEXT91*(.fixup)92*(.gnu.warning)93}94EXCEPTION_TABLE(L1_CACHE_BYTES)95_etext = .;9697_sdata = .;98RO_DATA(PAGE_SIZE)99100/*101* 1. this is .data essentially102* 2. THREAD_SIZE for init.task, must be kernel-stk sz aligned103*/104RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)105106_edata = .;107108BSS_SECTION(4, 4, 4)109110#ifdef CONFIG_ARC_DW2_UNWIND111. = ALIGN(PAGE_SIZE);112.eh_frame : {113__start_unwind = .;114*(.eh_frame)115__end_unwind = .;116}117#else118/DISCARD/ : { *(.eh_frame) }119#endif120121. = ALIGN(PAGE_SIZE);122_end = . ;123124STABS_DEBUG125ELF_DETAILS126DISCARDS127128.arcextmap 0 : {129*(.gnu.linkonce.arcextmap.*)130*(.arcextmap.*)131}132133#ifndef CONFIG_DEBUG_INFO134/DISCARD/ : { *(.debug_frame) }135/DISCARD/ : { *(.debug_aranges) }136/DISCARD/ : { *(.debug_pubnames) }137/DISCARD/ : { *(.debug_info) }138/DISCARD/ : { *(.debug_abbrev) }139/DISCARD/ : { *(.debug_line) }140/DISCARD/ : { *(.debug_str) }141/DISCARD/ : { *(.debug_loc) }142/DISCARD/ : { *(.debug_macinfo) }143/DISCARD/ : { *(.debug_ranges) }144#endif145146#ifdef CONFIG_ARC_HAS_DCCM147. = CONFIG_ARC_DCCM_BASE;148__arc_dccm_base = .;149.data.arcfp : {150*(.data.arcfp)151}152. = ALIGN(CONFIG_ARC_DCCM_SZ * 1024);153#endif154}155156157