mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Enabling CONFIG_STACKDEPOT results in the following build error. arc-elf-ld: lib/stackdepot.o: in function `filter_irq_stacks': stackdepot.c:(.text+0x456): undefined reference to `__irqentry_text_start' arc-elf-ld: stackdepot.c:(.text+0x456): undefined reference to `__irqentry_text_start' arc-elf-ld: stackdepot.c:(.text+0x476): undefined reference to `__irqentry_text_end' arc-elf-ld: stackdepot.c:(.text+0x476): undefined reference to `__irqentry_text_end' arc-elf-ld: stackdepot.c:(.text+0x484): undefined reference to `__softirqentry_text_start' arc-elf-ld: stackdepot.c:(.text+0x484): undefined reference to `__softirqentry_text_start' arc-elf-ld: stackdepot.c:(.text+0x48c): undefined reference to `__softirqentry_text_end' arc-elf-ld: stackdepot.c:(.text+0x48c): undefined reference to `__softirqentry_text_end' Other architectures address this problem by adding IRQENTRY_TEXT and SOFTIRQENTRY_TEXT to the text segment, so do the same here. Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
		
			
				
	
	
		
			156 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			156 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
/* SPDX-License-Identifier: GPL-2.0-only */
 | 
						|
/*
 | 
						|
 * Copyright (C) 2004, 2007-2010, 2011-2012 Synopsys, Inc. (www.synopsys.com)
 | 
						|
 */
 | 
						|
 | 
						|
#include <asm-generic/vmlinux.lds.h>
 | 
						|
#include <asm/cache.h>
 | 
						|
#include <asm/page.h>
 | 
						|
#include <asm/thread_info.h>
 | 
						|
 | 
						|
OUTPUT_ARCH(arc)
 | 
						|
ENTRY(res_service)
 | 
						|
 | 
						|
#ifdef CONFIG_CPU_BIG_ENDIAN
 | 
						|
jiffies = jiffies_64 + 4;
 | 
						|
#else
 | 
						|
jiffies = jiffies_64;
 | 
						|
#endif
 | 
						|
 | 
						|
SECTIONS
 | 
						|
{
 | 
						|
	/*
 | 
						|
	 * ICCM starts at 0x8000_0000. So if kernel is relocated to some other
 | 
						|
	 * address, make sure peripheral at 0x8z doesn't clash with ICCM
 | 
						|
	 * Essentially vector is also in ICCM.
 | 
						|
	 */
 | 
						|
 | 
						|
	. = CONFIG_LINUX_LINK_BASE;
 | 
						|
 | 
						|
	_int_vec_base_lds = .;
 | 
						|
	.vector : {
 | 
						|
		*(.vector)
 | 
						|
		. = ALIGN(PAGE_SIZE);
 | 
						|
	}
 | 
						|
 | 
						|
#ifdef CONFIG_ARC_HAS_ICCM
 | 
						|
	.text.arcfp : {
 | 
						|
		*(.text.arcfp)
 | 
						|
		. = ALIGN(CONFIG_ARC_ICCM_SZ * 1024);
 | 
						|
	}
 | 
						|
#endif
 | 
						|
 | 
						|
	/*
 | 
						|
	 * The reason for having a seperate subsection .init.ramfs is to
 | 
						|
	 * prevent objump from including it in kernel dumps
 | 
						|
	 *
 | 
						|
	 * Reason for having .init.ramfs above .init is to make sure that the
 | 
						|
	 * binary blob is tucked away to one side, reducing the displacement
 | 
						|
	 * between .init.text and .text, avoiding any possible relocation
 | 
						|
	 * errors because of calls from .init.text to .text
 | 
						|
	 * Yes such calls do exist. e.g.
 | 
						|
	 *	decompress_inflate.c:gunzip( ) -> zlib_inflate_workspace( )
 | 
						|
	 */
 | 
						|
 | 
						|
	__init_begin = .;
 | 
						|
 | 
						|
	.init.ramfs : { INIT_RAM_FS }
 | 
						|
 | 
						|
	. = ALIGN(PAGE_SIZE);
 | 
						|
 | 
						|
	HEAD_TEXT_SECTION
 | 
						|
	INIT_TEXT_SECTION(L1_CACHE_BYTES)
 | 
						|
 | 
						|
	/* INIT_DATA_SECTION open-coded: special INIT_RAM_FS handling */
 | 
						|
	.init.data : {
 | 
						|
		INIT_DATA
 | 
						|
		INIT_SETUP(L1_CACHE_BYTES)
 | 
						|
		INIT_CALLS
 | 
						|
		CON_INITCALL
 | 
						|
	}
 | 
						|
 | 
						|
	.init.arch.info : {
 | 
						|
		__arch_info_begin = .;
 | 
						|
		*(.arch.info.init)
 | 
						|
		__arch_info_end = .;
 | 
						|
	}
 | 
						|
 | 
						|
	PERCPU_SECTION(L1_CACHE_BYTES)
 | 
						|
 | 
						|
	. = ALIGN(PAGE_SIZE);
 | 
						|
	__init_end = .;
 | 
						|
 | 
						|
	.text : {
 | 
						|
		_text = .;
 | 
						|
		_stext = .;
 | 
						|
		TEXT_TEXT
 | 
						|
		SCHED_TEXT
 | 
						|
		CPUIDLE_TEXT
 | 
						|
		LOCK_TEXT
 | 
						|
		KPROBES_TEXT
 | 
						|
		IRQENTRY_TEXT
 | 
						|
		SOFTIRQENTRY_TEXT
 | 
						|
		*(.fixup)
 | 
						|
		*(.gnu.warning)
 | 
						|
	}
 | 
						|
	EXCEPTION_TABLE(L1_CACHE_BYTES)
 | 
						|
	_etext = .;
 | 
						|
 | 
						|
	_sdata = .;
 | 
						|
	RO_DATA(PAGE_SIZE)
 | 
						|
 | 
						|
	/*
 | 
						|
	 * 1. this is .data essentially
 | 
						|
	 * 2. THREAD_SIZE for init.task, must be kernel-stk sz aligned
 | 
						|
	 */
 | 
						|
	RW_DATA(L1_CACHE_BYTES, PAGE_SIZE, THREAD_SIZE)
 | 
						|
 | 
						|
	_edata = .;
 | 
						|
 | 
						|
	BSS_SECTION(4, 4, 4)
 | 
						|
 | 
						|
#ifdef CONFIG_ARC_DW2_UNWIND
 | 
						|
	. = ALIGN(PAGE_SIZE);
 | 
						|
	.eh_frame  : {
 | 
						|
		__start_unwind = .;
 | 
						|
		*(.eh_frame)
 | 
						|
		__end_unwind = .;
 | 
						|
	}
 | 
						|
#else
 | 
						|
	/DISCARD/ : {	*(.eh_frame) }
 | 
						|
#endif
 | 
						|
 | 
						|
	. = ALIGN(PAGE_SIZE);
 | 
						|
	_end = . ;
 | 
						|
 | 
						|
	STABS_DEBUG
 | 
						|
	ELF_DETAILS
 | 
						|
	DISCARDS
 | 
						|
 | 
						|
	.arcextmap 0 : {
 | 
						|
		*(.gnu.linkonce.arcextmap.*)
 | 
						|
		*(.arcextmap.*)
 | 
						|
	}
 | 
						|
 | 
						|
#ifndef CONFIG_DEBUG_INFO
 | 
						|
	/DISCARD/ : { *(.debug_frame) }
 | 
						|
	/DISCARD/ : { *(.debug_aranges) }
 | 
						|
	/DISCARD/ : { *(.debug_pubnames) }
 | 
						|
	/DISCARD/ : { *(.debug_info) }
 | 
						|
	/DISCARD/ : { *(.debug_abbrev) }
 | 
						|
	/DISCARD/ : { *(.debug_line) }
 | 
						|
	/DISCARD/ : { *(.debug_str) }
 | 
						|
	/DISCARD/ : { *(.debug_loc) }
 | 
						|
	/DISCARD/ : { *(.debug_macinfo) }
 | 
						|
	/DISCARD/ : { *(.debug_ranges) }
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef CONFIG_ARC_HAS_DCCM
 | 
						|
	. = CONFIG_ARC_DCCM_BASE;
 | 
						|
	__arc_dccm_base = .;
 | 
						|
	.data.arcfp : {
 | 
						|
		*(.data.arcfp)
 | 
						|
	}
 | 
						|
	. = ALIGN(CONFIG_ARC_DCCM_SZ * 1024);
 | 
						|
#endif
 | 
						|
}
 |