cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

vmlinux.lds.S (3027B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2/*
      3 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
      4 */
      5
      6#include <asm-generic/vmlinux.lds.h>
      7#include <asm/cache.h>
      8#include <asm/page.h>
      9#include <asm/thread_info.h>
     10
     11OUTPUT_ARCH(arc)
     12ENTRY(res_service)
     13
     14#ifdef CONFIG_CPU_BIG_ENDIAN
     15jiffies = jiffies_64 + 4;
     16#else
     17jiffies = jiffies_64;
     18#endif
     19
     20SECTIONS
     21{
     22	/*
     23	 * ICCM starts at 0x8000_0000. So if kernel is relocated to some other
     24	 * address, make sure peripheral at 0x8z doesn't clash with ICCM
     25	 * Essentially vector is also in ICCM.
     26	 */
     27
     28	. = CONFIG_LINUX_LINK_BASE;
     29
     30	_int_vec_base_lds = .;
     31	.vector : {
     32		*(.vector)
     33		. = ALIGN(PAGE_SIZE);
     34	}
     35
     36#ifdef CONFIG_ARC_HAS_ICCM
     37	.text.arcfp : {
     38		*(.text.arcfp)
     39		. = ALIGN(CONFIG_ARC_ICCM_SZ * 1024);
     40	}
     41#endif
     42
     43	/*
     44	 * The reason for having a seperate subsection .init.ramfs is to
     45	 * prevent objump from including it in kernel dumps
     46	 *
     47	 * Reason for having .init.ramfs above .init is to make sure that the
     48	 * binary blob is tucked away to one side, reducing the displacement
     49	 * between .init.text and .text, avoiding any possible relocation
     50	 * errors because of calls from .init.text to .text
     51	 * Yes such calls do exist. e.g.
     52	 *	decompress_inflate.c:gunzip( ) -> zlib_inflate_workspace( )
     53	 */
     54
     55	__init_begin = .;
     56
     57	.init.ramfs : { INIT_RAM_FS }
     58
     59	. = ALIGN(PAGE_SIZE);
     60
     61	HEAD_TEXT_SECTION
     62	INIT_TEXT_SECTION(L1_CACHE_BYTES)
     63
     64	/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */
     65	.init.data : {
     66		INIT_DATA
     67		INIT_SETUP(L1_CACHE_BYTES)
     68		INIT_CALLS
     69		CON_INITCALL
     70	}
     71
     72	.init.arch.info : {
     73		__arch_info_begin = .;
     74		*(.arch.info.init)
     75		__arch_info_end = .;
     76	}
     77
     78	PERCPU_SECTION(L1_CACHE_BYTES)
     79
     80	. = ALIGN(PAGE_SIZE);
     81	__init_end = .;
     82
     83	.text : {
     84		_text = .;
     85		_stext = .;
     86		TEXT_TEXT
     87		SCHED_TEXT
     88		CPUIDLE_TEXT
     89		LOCK_TEXT
     90		KPROBES_TEXT
     91		IRQENTRY_TEXT
     92		SOFTIRQENTRY_TEXT
     93		*(.fixup)
     94		*(.gnu.warning)
     95	}
     96	EXCEPTION_TABLE(L1_CACHE_BYTES)
     97	_etext = .;
     98
     99	_sdata = .;
    100	RO_DATA(PAGE_SIZE)
    101
    102	/*
    103	 * 1. this is .data essentially
    104	 * 2. THREAD_SIZE for init.task, must be kernel-stk sz aligned
    105	 */
    106	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
    107
    108	_edata = .;
    109
    110	BSS_SECTION(4, 4, 4)
    111
    112#ifdef CONFIG_ARC_DW2_UNWIND
    113	. = ALIGN(PAGE_SIZE);
    114	.eh_frame  : {
    115		__start_unwind = .;
    116		*(.eh_frame)
    117		__end_unwind = .;
    118	}
    119#else
    120	/DISCARD/ : {	*(.eh_frame) }
    121#endif
    122
    123	. = ALIGN(PAGE_SIZE);
    124	_end = . ;
    125
    126	STABS_DEBUG
    127	ELF_DETAILS
    128	DISCARDS
    129
    130	.arcextmap 0 : {
    131		*(.gnu.linkonce.arcextmap.*)
    132		*(.arcextmap.*)
    133	}
    134
    135#ifndef CONFIG_DEBUG_INFO
    136	/DISCARD/ : { *(.debug_frame) }
    137	/DISCARD/ : { *(.debug_aranges) }
    138	/DISCARD/ : { *(.debug_pubnames) }
    139	/DISCARD/ : { *(.debug_info) }
    140	/DISCARD/ : { *(.debug_abbrev) }
    141	/DISCARD/ : { *(.debug_line) }
    142	/DISCARD/ : { *(.debug_str) }
    143	/DISCARD/ : { *(.debug_loc) }
    144	/DISCARD/ : { *(.debug_macinfo) }
    145	/DISCARD/ : { *(.debug_ranges) }
    146#endif
    147
    148#ifdef CONFIG_ARC_HAS_DCCM
    149	. = CONFIG_ARC_DCCM_BASE;
    150	__arc_dccm_base = .;
    151	.data.arcfp : {
    152		*(.data.arcfp)
    153	}
    154	. = ALIGN(CONFIG_ARC_DCCM_SZ * 1024);
    155#endif
    156}